xxxxxxxxxx
104
let drops = [];
let r = 1;
let a = 0;
let palette, bk;
function setup() {
createCanvas(640, 360);
palette = [
color(11, 106, 136),
color(45, 197, 244),
color(112, 50, 126),
color(146, 83, 161),
color(164, 41, 99),
color(236, 1, 90),
color(240, 99, 164),
color(241, 97, 100),
color(248, 158, 79),
color(252, 238, 33),
];
bk = palette.splice(5, 1)[0];
// let v = createVector(1, 1);
// v.normalize();
// tineLine(v, 300, 300, 80, 16);
}
let start;
function tineLine(v, x, y, z, c) {
for (let drop of drops) {
drop.tine(v, x, y, z, c);
}
}
// function tineLine(xl, z, c) {
// for (let drop of drops) {
// drop.tine(xl, z, c);
// }
// }
function addInk(x, y, r, col) {
let drop = new Drop(x, y, r, col);
for (let other of drops) {
other.marble(drop);
}
drops.push(drop);
}
let val = 4;
function draw() {
// if (random(1) < 0.01) {
// let x = random(width);
// let y = random(height);
// let r = random(10, 100);
// addInk(x, y, r);
// }
// if (mouseIsPressed) {
// tineLine(mouseX, 4, 16);
// }
let factor = 1;
let a = factor * frameCount * 137.5;
let r = val * sqrt(factor * frameCount);
let x = r * cos(a);
let y = r * sin(a);
let v = createVector(x, y);
let c1 = color(248, 158, 79);
let c2 = color(252, 238, 33);
v.col = lerpColor(c1, c2, (frameCount % 60) / 60);
if (frameCount < 120) {
let total = val / 2;
for (let n = 0; n < total; n++) {
let r = map(n, 0, total, 20, 4);
addInk(v.x + width / 2, v.y + height / 2, r, random(palette));
}
val += 0.2;
} else {
noLoop();
}
background(bk);
for (let drop of drops) {
drop.show();
}
}
function mousePressed() {
let step = 10;
for (let j = 0; j < width; j += step) {
let v = createVector(0, 1);
tineLine(v, j, height / 2, 24, 2);
}
redraw();
}