p5(sketch => {
sketch.setup = () => {
sketch.createCanvas(400, 400);
sketch.noLoop();
};
sketch.draw = () => {
sketch.background(150, 0, 150, 150);
sketch.noFill();
sketch.strokeWeight(4);
sketch.beginShape();
sketch.fill(150, 0, 150, 150);
sketch.strokeWeight(2);
sketch.stroke(100, 0, 100);
sketch.beginShape();
sketch.endShape(sketch.CLOSE);
drawStars();
};
function drawStar(x, y, radius1, radius2, npoints) {
let angle = sketch.TWO_PI / npoints;
let halfAngle = angle / 2.0;
let startAngle = sketch.HALF_PI;
sketch.beginShape();
for (let i = 0; i < npoints; i++) {
let outerX = x + sketch.cos(startAngle - i * angle) * radius1;
let outerY = y - sketch.sin(startAngle - i * angle) * radius1;
sketch.vertex(outerX, outerY);
let innerX = x + sketch.cos(startAngle - (i + 0.5) * angle) * radius2;
let innerY = y - sketch.sin(startAngle - (i + 0.5) * angle) * radius2;
sketch.vertex(innerX, innerY);
}
sketch.endShape(sketch.CLOSE);
}
function drawStars() {
let starCount = 50;
sketch.fill(150, 0, 150, 150);
for (let i = 0; i < starCount; i++) {
let x = sketch.random(sketch.width);
let y = sketch.random(sketch.height);
let npoints = i % 2 === 0 ? 4 : 5;
let radius1 = sketch.random(5, 10);
let radius2 = radius1 * sketch.random(0.5, 0.6);
drawStar(x, y, radius1, radius2, npoints);
}
}
})