xxxxxxxxxx
/***********************************
* dailycoding - 20250206 / graphic
* by E.C.H (Eiichi Ishii)
***********************************/
let num = 400;
let cp = ["#86A9E0", "#DA5BD4", "#DC7EB4", "#7B6296", "#7957AA"];
let w;
function setup() {
w = min(windowWidth, windowHeight);
createCanvas(w, w);
angleMode(DEGREES);
rectMode(CENTER);
strokeCap(PROJECT);
strokeJoin(BEVEL);
noLoop();
}
function draw() {
background(255);
for (let i = 0; i < num; i++) {
push();
translate(random(-w / 4, w + w / 4), random(-w / 4, w + w / 4));
let r = random(w / 8, w / 3);
let v = int(random(1, 11)) * 10;
let rg = r / v;
noStroke();
for (let rr = r; rr >= 0; rr -= rg) {
push();
drawingContext.shadowOffsetX = rr / 24;
drawingContext.shadowOffsetY = rr / 24;
drawingContext.shadowBlur = rr / 6;
drawingContext.shadowColor = "black";
let rx, ry;
if (int(random(2)) == 0) {
rx = random(-r / 2 + rr / 2, r / 2 - rr / 2);
ry = random(-r / 2 + rr / 2, r / 2 - rr / 2);
} else {
rx = 0;
ry = 0;
}
fill(random([random([0, 255]), random(cp)]));
rect(rx, ry, rr, rr);
pop();
}
let eg = r / 10;
push();
translate(random(-r, r), random(-r, r));
let ec = color(random([random([0, 255]), random(cp)]));
for (let ex = -r / 2; ex <= r / 2; ex += eg) {
for (let ey = -r / 2; ey <= r / 2; ey += eg) {
let er = random([eg / 2, eg]);
if (int(random(2)) == 0) {
if (int(random(2)) == 0) {
fill(ec);
noStroke();
} else {
stroke(ec);
strokeWeight(er / 10);
noFill();
}
ellipse(ex, ey, er, er);
}
}
}
pop();
push();
rotate(random(360));
stroke(random([random([0, 255]), random(cp)]));
noFill();
for (let k = 0; k < int(num / 80); k++) {
strokeWeight(random(r / 40));
bezier(
random(-r * 2, r * 2),
-r / 2,
random(-r * 2, r * 2),
-r / 4,
random(-r * 2, r * 2),
r / 4,
random(-r * 2, r * 2),
r / 2
);
}
pop();
push();
rotate(random(-45, 45));
let sr = random(1, r / 8);
if (int(random(2)) == 0) {
fill(random([0, 255]));
noStroke();
if (int(random(2)) == 0) {
rect(0, 0, sr, w * 4);
} else {
rect(0, 0, w * 4, sr);
}
}
pop();
pop();
}
let rw = w/10;
rakkan(rw/2.5, w-rw/1.25, rw, 0);
}
function rakkan(posx, posy, r, csw) {
push();
randomSeed(558);
translate(posx, posy);
rectMode(CENTER);
let nr = r / 2.5;
let lr = r / 20;
if (csw == 0) {
fill("#e2041b");
noStroke();
} else if (csw == 1) {
noFill();
stroke("#e2041b");
strokeWeight(lr / 4);
}
rect(0, 0, r / 1.4, r * 1.5, r / 5);
if (csw == 0) {
stroke(255);
} else if (csw == 1) {
fill(255);
stroke("#e2041b");
}
strokeWeight(lr / 1.5);
noFill();
for (let i = 0; i < 10; i++) {
let z = random(lr / 20, lr / 2);
push();
push();
translate(0, -nr);
beginShape();
vertex(nr / 2 + random(-z, z), -nr / 2 + random(-z, z));
vertex(random(-z, z), -nr / 2 + random(-z, z));
vertex(-nr / 2 + random(-z, z), random(-z, z));
vertex(random(-z, z), nr / 2 + random(-z, z));
vertex(nr / 2 + random(-z, z), nr / 2 + random(-z, z));
endShape();
beginShape();
vertex(-nr / 2 + random(-z, z), random(-z, z));
vertex(nr / 2 + random(-z, z), random(-z, z));
endShape();
pop();
push();
translate(0, 0);
beginShape();
vertex(nr / 2 + random(-z, z), -nr / 2 + random(-z, z));
vertex(random(-z, z), -nr / 2 + random(-z, z));
vertex(-nr / 2 + random(-z, z), random(-z, z));
vertex(random(-z, z), nr / 2 + random(-z, z));
vertex(nr / 2 + random(-z, z), nr / 2 + random(-z, z));
endShape();
strokeWeight(lr / 3);
beginShape();
vertex(nr / 2 + random(-z, z), -nr / 2 + random(-z, z));
vertex(-nr / 2 + random(-z, z), nr / 2 + random(-z, z));
endShape();
pop();
push();
translate(0, nr);
beginShape();
vertex(-nr / 2 + random(-z, z), -nr / 2 + random(-z, z));
vertex(-nr / 2 + random(-z, z), nr / 2 + random(-z, z));
endShape();
beginShape();
vertex(nr / 2 + random(-z, z), -nr / 2 + random(-z, z));
vertex(nr / 2 + random(-z, z), nr / 2 + random(-z, z));
endShape();
beginShape();
vertex(-nr / 2 + random(-z, z), random(-z, z));
vertex(nr / 2 + random(-z, z), random(-z, z));
endShape();
strokeWeight(lr / 3);
beginShape();
vertex(nr / 2 + random(-z, z), -nr / 2 + random(-z, z));
vertex(-nr / 2 + random(-z, z), nr / 2 + random(-z, z));
endShape();
pop();
pop();
}
pop();
}
function keyPressed() {
redraw();
}