p5((s) => {
let system, x, y, xdir, ydir, vari;
let clr = 0;
let bg = getColor();
let c1 = s.color(getColor());
let c2 = s.color(getColor());
s.setup = function () {
s.createCanvas(W, H);
s.noStroke();
s.background(bg);
xdir = 1;
ydir = 1;
vari = s.random(1);
};
s.draw = function () {
for (let n = 0; n < 20; n++) {
for (let i = 0; i < pnts.length; i++) {
s.fill(pnts[i].clr);
drawPencil(pnts[i].x, pnts[i].y, 100);
pnts[i].x += pnts[i].xdir + s.random(-1, 1);
pnts[i].y += pnts[i].ydir + s.random(-1, 1);
if (s.random(1) < 0.001) {
pnts[i].clr = getColor();
}
pnts[i].xdir =
s.random(1) < vari ? (pnts[i].xdir == -1 ? 1 : -1) : pnts[i].xdir;
pnts[i].ydir =
s.random(1) < vari ? (pnts[i].ydir == -1 ? 1 : -1) : pnts[i].ydir;
if (pnts[i].x > W || pnts[i].x < 0) {
pnts[i].xdir = pnts[i].xdir == -1 ? 1 : -1;
}
if (pnts[i].y > H || pnts[i].y < 0) {
pnts[i].ydir = pnts[i].ydir == -1 ? 1 : -1;
}
}
}
};
const drawPencil = (x, y, r) => {
let cx, cy;
s.push();
s.translate(x, y);
for (let i = 0; i < 10; i++) {
cx = 10 * s.sin(s.random());
cy = 10 * s.cos(s.random());
s.ellipse(cx, cy, 1, 1);
}
s.pop();
};
})