p5((s) => {
let c1 = getColor();
let c2 = getColor();
let c3 = getColor();
let c4 = getColor();
s.setup = function () {
s.createCanvas(W, H);
};
const draw_circle = ([x, y], r, c) => {
s.noStroke();
s.fill(c);
s.circle((x + 1) * W * 0.5, (y + 1) * W * 0.5, r * 0.5);
};
let k = (a, b) => (a > 0 && b > 0 ? L(a, b) : a > b ? a : b);
let spread = s.random(0.8);
const sdf = ([x, y]) => {
let bal =
Math.abs(sf.sdf_rep(sf.sdf_circle([x, y], [-spread, 0], 0.2), 0.2)) -
0.05;
let bbl =
Math.abs(sf.sdf_rep(sf.sdf_circle([x, y], [spread, 0], 0.2), 0.2)) - 0.05;
let bbc =
Math.abs(sf.sdf_rep(sf.sdf_circle([x, y], [0, -spread], 0.2), 0.2)) -
0.05;
let bbd =
Math.abs(sf.sdf_rep(sf.sdf_circle([x, y], [0, spread], 0.2), 0.2)) - 0.05;
return Math.min(Math.max(bal, bbl), Math.max(bbc, bbd));
};
s.draw = function () {
for (let k = 0; k < 10000; k++) {
let p = [R(2) - 1, R(2) - 1];
let d = sdf(p);
let col = c1;
if (d < -0.01) col = c4;
if (d > 0.01) col = c3;
draw_circle(p, 2, col);
}
};
})