xxxxxxxxxx
53
let masses = [];
function setup() {
createCanvas(400, 400);
// randomized
for (let i=0;i<3;i++){
masses.push({x:~~random(10,390),
y:~~random(10,390),
m:~~random(.5,4)});
}
/* // testing
masses.push({x:150,y:50,m:2});
masses.push({x:300,y:320,m:1});
masses.push({x:50,y:180,m:-1});
*/
}
let K = 10;
function draw() {
noStroke();
let F=0;
for (let x=0;x<width;x+=K){
for (let y=0;y<height;y+=K){
F =0;
tot = 0;
for (let m of masses){
F += m.m*dist(x,y,m.x,m.y);
tot += m.m;
}
F = F/tot*masses.length**.5;
fill(color(F,F/2,255-F));
rect(x,y,K,K);
}
}
noStroke();
fill("black");
for (let i=0;i<masses.length;i++){
let m = masses[i];
circle(m.x,m.y,m.m*5);
masses[i].x += sin(frameCount/PI+i)*3;
masses[i].y += sin(frameCount/PI/3*i)*3;
}
}
function saveToGif(){
// .. to do
saveGif('mySketch', 60, { units: "frames" });
let element = select("#progressBar");
element.position(200,510);
}