xxxxxxxxxx
/***********************************
* dailycoding - 20250101 / graphic
* by E.C.H (Eiichi Ishii)
***********************************/
let w, g;
let cp = ["#D0A900", "#A4243B", "#D8C99B", "#D8973C", "#BD632F", "#273E47"];
function setup() {
w = min(windowWidth, windowHeight);
createCanvas(w, w);
angleMode(DEGREES);
rectMode(CENTER);
strokeCap(SQUARE);
noLoop();
g = w / 8;
}
function draw() {
background(255);
for (let x = g / 2; x <= w - g / 2; x += g) {
for (let y = g / 2; y <= w - g / 2; y += g) {
push();
translate(x, y);
fill(random([255, random(cp)]));
noStroke();
rect(0, 0, g, g);
rotate(int(random(4)) * 90);
scale(random([-1, 1]), 1);
noStroke();
let sw = int(random(2));
if (sw == 0) {
fill(random(cp));
ellipse(-g / 4, -g / 4, g / 2, g / 2);
fill(random(cp));
beginShape();
vertex(-g / 4, 0);
bezierVertex(-g / 4, 0, 0, 0, 0, g / 2);
vertex(0, g / 2);
vertex(0, -g / 4);
endShape(CLOSE);
fill(random(cp));
beginShape();
vertex(0, -g / 4);
vertex(g / 2, 0);
vertex(0, g / 8);
endShape(CLOSE);
fill(random(cp));
ellipse(-g / 4, g / 4, g / 3, g / 3);
fill(random(cp));
arc(g / 2, g / 2, g / 1.15, g / 1.15, 180, 270);
}
if (sw == 1) {
fill(random(cp));
arc(0, 0, g, g, 0, 90);
fill(random(cp));
arc(0, 0, g / 2, g / 2, 90, 270);
fill(random(cp));
beginShape();
vertex(0, -g / 4);
bezierVertex(0, -g / 4, g / 3, -g / 8, g / 2, -g / 2);
vertex(g / 2, -g / 2);
vertex(g / 2, 0);
endShape(CLOSE);
fill(random(cp));
arc(-g / 2, 0, g / 2, g / 2, 270, 45);
fill(random(cp));
arc(-g / 2, 0, g, g, 45, 90);
}
strokeWeight(g / 60);
noFill();
if (sw == 0) {
stroke(random([255, random(cp)]));
line(0, -g / 4, g / 2, -g / 2);
stroke(random([255, random(cp)]));
line(0, g / 8, g / 2, g / 2);
stroke(random([255, random(cp)]));
arc(-g / 2, 0, g / 2, g / 2, 270, 380);
arc(-g / 2, 0, g / 2, g / 2, 70, 90);
} else if (sw == 1) {
stroke(random([255, random(cp)]));
line(-g / 2, -g / 2, 0, -g / 4);
stroke(random([255, random(cp)]));
line(0, 0, g / 2, g / 2);
stroke(random([255, random(cp)]));
line(0, -g / 4, 0, -g / 2);
}
pop();
}
}
let rw = w/10;
rakkan(rw/2.5, w-rw/1.25, rw, 0);
}
function rakkan(posx, posy, r, csw) {
push();
randomSeed(2077);
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();
}