xxxxxxxxxx
/***********************************
* dailycoding - 20250402 / graphic
* by E.C.H (Eiichi Ishii)
***********************************/
let w, pg;
let num = 300;
let cp = ["#201332", "#3B715B", "#9FB092", "#D3CB9D", "#C54C1E"];
function setup() {
w = min(windowWidth, windowHeight);
createCanvas(w, w);
angleMode(DEGREES);
strokeCap(ROUND);
strokeJoin(ROUND);
noLoop();
}
function draw() {
background(255);
pg = createGraphics(w, w, WEBGL);
pg.angleMode(DEGREES);
pg.ambientLight(200);
pg.directionalLight(255, 255, 255, 0, 1, 0);
for (let i = 0; i < num; i++) {
pg.push();
pg.translate(random(-w, w), random(-w, w), random(-w * 4));
pg.rotateX(random(360));
pg.rotateY(random(360));
pg.rotateZ(random(360));
let r = random(w / 4, w / 2);
let v = random([20, 40]);
let rg = r / v;
pg.noStroke();
for (let z = -r / 6; z <= r / 6; z += rg) {
pg.push();
pg.translate(0, 0, z);
pg.rotateZ(random(-30, 30));
pg.fill(random(cp));
pg.arc(0, 0, r, r, 0, 90);
pg.pop();
}
pg.push();
pg.translate(random(-r, r), random(-r, r), random(-r));
pg.fill(random(cp));
let sr = random(r / 20, r / 4);
pg.sphere(sr);
pg.pop();
pg.pop();
}
image(pg, 0, 0, w, w);
for (let i = 0; i < int(num / 10); i++) {
push();
translate(w / 2, w / 2);
let xn = random(-w, w);
let yn = random(-w, w);
stroke(random([0, random(cp)]));
strokeWeight(random(1, w / 200));
noFill();
beginShape();
for (let j = 0; j < int(num / 3); j++) {
let cx = map(noise(xn), 0, 1, -w, w);
let cy = map(noise(yn), 0, 1, -w, w);
xn += 0.01;
yn += 0.01;
vertex(cx, cy);
}
endShape();
pop();
}
let rw = w/10;
rakkan(rw/2.5, w-rw/1.25, rw, 0);
}
function rakkan(posx, posy, r, csw) {
push();
randomSeed(6997);
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();
}