xxxxxxxxxx
// By Roni Kaufman
// https://ronikaufman.github.io/
// https://twitter.com/KaufmanRoni
let palette = ["#4464a1", "#56a1c4", "#ee726b", "#ffc5c7", "#fef9c6", "#df5f50", "#5a3034", "#f5b800"];
function setup() {
createCanvas(1000, 700);
noLoop();
noFill();
strokeWeight(3);
stroke(255);
}
function draw() {
background("#00040c");
let s = 80;
for (let x = s/2; x < width-s/2; x += s) {
for (let y = s/2; y < height-s/2; y += s) {
if (random() < 1/2) {
makeTile(x, y, s/2);
makeTile(x+s/2, y, s/2);
makeTile(x, y+s/2, s/2);
makeTile(x+s/2, y+s/2, s/2);
} else {
makeTile(x, y, s);
}
}
}
}
function makeTile(x, y, s) {
shuffle(palette, true);
fill(palette[0]);
square(x, y, s);
push();
translate(x+s/2, y+s/2);
rotate(random([0, PI/2]));
let r = floor(random(15));
switch (r) {
case 0:
fill(palette[1]);
arc(-s/2, -s/2, s, s, 0, PI/2, PIE);
fill(palette[2]);
arc(s/2, -s/2, s, s, PI/2, PI, PIE);
fill(palette[3]);
arc(s/2, s/2, s, s, PI, 3*PI/2, PIE);
fill(palette[4]);
arc(-s/2, s/2, s, s, 3*PI/2, 2*PI, PIE);
break;
case 1:
fill(palette[1]);
arc(-s/2, -s/2, s, s, 0, PI/2, PIE);
fill(palette[2]);
arc(s/2, -s/2, s, s, PI/2, PI, PIE);
fill(palette[3]);
arc(s/2, s/2, s, s, PI, 3*PI/2, PIE);
break;
case 2:
fill(palette[1]);
arc(-s/2, -s/2, s, s, 0, PI/2, PIE);
fill(palette[2]);
arc(s/2, -s/2, s, s, PI/2, PI, PIE);
break;
case 3:
fill(palette[1]);
arc(-s/2, -s/2, s, s, 0, PI/2, PIE);
fill(palette[2]);
arc(s/2, s/2, s, s, PI, 3*PI/2, PIE);
break;
case 4:
fill(palette[1]);
arc(-s/2, -s/2, s, s, 0, PI/2, PIE);
break;
case 5:
fill(palette[1]);
arc(0, -s/2, s, s, 0, PI, PIE);
fill(palette[2]);
arc(0, s/2, s, s, PI, 2*PI, PIE);
break;
case 6:
fill(palette[1]);
arc(0, -s/2, s, s, 0, PI, PIE);
break;
case 7:
fill(palette[1]);
arc(0, -s/2, s, s, 0, PI, PIE);
fill(palette[2]);
arc(s/2, s/2, s, s, PI, 3*PI/2, PIE);
fill(palette[3]);
arc(-s/2, s/2, s, s, 3*PI/2, 2*PI, PIE);
break;
case 8:
fill(palette[1]);
arc(0, -s/2, s, s, 0, PI, PIE);
fill(palette[2]);
arc(s/2, s/2, s, s, PI, 3*PI/2, PIE);
break;
case 9:
fill(palette[1]);
arc(0, -s/2, s, s, 0, PI, PIE);
fill(palette[2]);
arc(-s/2, s/2, s, s, 3*PI/2, 2*PI, PIE);
break;
case 10:
fill(palette[1]);
rect(-s/2, -s/2, s/2, s/2);
fill(palette[2]);
rect(-s/2, 0, s/2, s/2);
fill(palette[3]);
rect(0, -s/2, s/2, s/2);
break;
case 11:
fill(palette[1]);
rect(-s/2, -s/2, s, s/2);
break;
case 12:
fill(palette[1]);
rect(-s/2, -s/2, s, s/2);
fill(palette[2]);
rect(0, -s/2, s/2, s/2);
break;
case 13:
fill(palette[1]);
square(0, 0, s/2);
break;
case 14:
fill(palette[1]);
arc(-s/2, -s/2, s, s, 0, PI/2, PIE);
fill(palette[2]);
square(0, 0, s/2);
}
pop();
}