let mode = 0;
let multiRake = [];
let x, y;
function setup() {
createCanvas(windowWidth, windowHeight);
noStroke();
angleMode(DEGREES);
r1 = 237;
g1 = 233;
b1 = 209;
frameCount = 0;
background(r1, g1, b1);
for (let i = 0; i < 50000; i++) {
fill(r1 / 1.5, g1 / 1.5, b1 / 1.5);
circle(random(0, width), random(0, height), 0.5);
fill(r1 * 2, g1 * 2, b1 * 2);
circle(random(0, width), random(0, height), 0.5);
fill(r1, g1, b1);
circle(random(0, width), random(0, height), 0.5);
}
multiRake.push(new rake(0, 0));
}
function draw() {
console.log(mode);
translate(width / 2, height / 2);
t = frameCount;
for (let i = 0; i < multiRake.length; i++) {
push();
translate(multiRake[i].x, multiRake[i].y);
rakeSand();
pop();
}
}
function rakeSand() {
for (let i = 0; i < 32; i++) {
if (i % 3 === 0) {
c = 20;
} else {
c = 0;
}
fill(r1 - c, g1 - c, b1 - c);
getCoor(height / 4 - i * 4);
circle(x + random(-1, 1), y + random(-1, 1), 4);
fill(r1 / 2, g1 / 2, b1 / 2);
circle(x + random(-1, 1), y + random(-1, 1), 0.5);
fill(r1 * 2, g1 * 2, b1 * 2);
circle(x + random(-1, 1), y + random(-1, 1), 0.5);
}
}
function getCoor(r) {
if (mode === 0) {
x = r * sin(t) * cos(t / 2);
y = r * cos(t);
}
if (mode === 1) {
x = r * sin(t);
y = r * cos(t);
}
if (mode === 2) {
x = r * sin(t) * cos(t / 2);
y = r * cos(t / 2);
}
if (mode === 3) {
x = r * sin(t) * cos(t / 3);
y = r * cos(t) * cos(t / 3);
}
if (mode === 4) {
x = ((t % width) / 2) * sin(t) - (r / 2) * cos(t / 3);
y = r * cos(t) * cos(t / 3);
}
if (mode === 5) {
x = r * sin(t) - (r / 2) * cos(t / 3);
y = r * cos(t) * sin(t / 4);
}
if (mode === 6) {
x = r * sin(t) - 5 * cos(t * 4);
y = r * cos(t) - 5 * sin(t * 4);
}
if (mode === 7) {
x = r * sin(t) - 2 * cos(t * 20);
y = r * cos(t) - 2 * sin(t * 20);
}
if (mode === 8) {
x = r * sin(t) - (r / 4) * cos(t / 2);
y = r * cos(t) - 2 * sin(t * 20);
}
if (mode === 9) {
x = r * sin(t) * cos(-t) - (r / 4) * sin(t / 2) * cos(t);
y = r * cos(t) * cos(t) - (r / 4) * cos(t / 2);
}
if (mode === 10) {
x = r * sin(t) * cos(-t) - (r / 4) * sin(t / 2) * cos(t);
y = r * cos(t) * sin(t / 3) - (r / 3) * cos(t);
}
if (mode === 11) {
x = r * sin(t) * cos(-t) - (r / 3) * sin(t / 5) * cos(t);
y = r * cos(t) * sin(t / 3) - (r / 3) * cos(t / 8);
}
if (mode === 12) {
x = -width / 2 + (t % width);
y = r * cos(t) * sin(t / 3) - (r / 3) * cos(t / 8);
}
if (mode === 13) {
x = (-width / 2 + (t % width)) * cos(t);
y = r * cos(t) * sin(t / 3) - (r / 3) * cos(t / 8);
}
if (mode === 14) {
x = ((r / 4 + t / 10) % (width / 3)) * cos(t);
y = ((r / 4 + t / 10) % (width / 3)) * sin(t);
}
if (mode === 15) {
x = ((r / 4 + t / 10) % (width / 3)) * cos(t / 2);
y = ((r / 4 + t / 10) % (width / 3)) * sin(t);
}
if (mode === 16) {
x = ((r / 4 + t / 10) % (width / 3)) * cos(t) * sin(t / 2);
y = r * sin(t);
}
if (mode === 17) {
x = ((r / 4 + t / 10) % (width / 3)) * cos(t) * sin(t / 2);
y = r * cos(t) - (r / 4) * sin(t);
}
if (mode === 18) {
x = (r / 4) * cos(t) * sin(t / 2) + (r / 2) * sin(t / 10) - r * tan(t);
y = r * cos(t) - (r / 4) * sin(t);
}
if (mode === 19) {
x = -r * cos(t) - (r / 5) * sin(t / 2);
y = r * sin(t) - (r / 4) * tan(t / 4);
}
if (mode === 20) {
x = -r * cos(t) - (r / 5) * tan(t / 3);
y = r * sin(t) - (r / 5) * tan(t / 4);
}
if (mode === 21) {
x = mouseX - width / 2 + r * sin(t);
y = mouseY - height / 2 + r * cos(t);
}
}
function keyPressed() {
if (keyCode === 32) {
multiRake = [];
setup();
}
if (keyCode === 38) {
if (mode <= 20) {
mode++;
multiRake = [];
setup();
} else {
mode = 0;
multiRake = [];
setup();
}
}
if (keyCode === 40) {
if (mode > 0) {
mode--;
multiRake = [];
setup();
} else {
mode = 21;
multiRake = [];
setup();
}
}
}
function mousePressed() {
multiRake.push(new rake(mouseX - width / 2, mouseY - height / 2));
}
class rake {
constructor(x, y) {
this.x = x;
this.y = y;
this.mode = mode;
}
}