xxxxxxxxxx
67
let masses = [];
let field = [];
function setup() {
createCanvas(400, 400);
randomizeMasses();
noStroke();
fill("black");
}
let F,c;
let speed = 4;
function draw() {
if (speed*frameCount%800==0){
randomizeMasses();
}
let x,y;
let g = speed*frameCount%800;
c = [0,0,0,255];
for (x=0;x<width;x++){
for (y=0;y<height;y++){
F = field[x][y] + g;
c[0] = F>>2;
c[1] = F-c[0];
c[2] = 255-F>>1;
set(x,y,c);
}
}
updatePixels();
for (let i=0;i<masses.length;i++){
let m = masses[i];
circle(m.x,m.y,m.m*5);
}
}
function saveToGif(){
saveGif('three_masses_', 1, { units: "frames" });
let element = select("#progressBar");
element.position(200,510);
}
function randomizeMasses(){
masses = [];
for (let i=0;i<3;i++){
masses.push({x:~~random(20,380),
y:~~random(20,380),
m:~~random(1,5)});
}
let F=0;
let sk = 10** (random(6,7));
//console.log(sk);
for (let x=0;x<width;x++){
field[x]=[];
for (let y=0;y<height;y++){
F = 0;
tot = 0;
for (let m of masses){
F += m.m/dist(x,y,m.x,m.y)**2;
tot += m.m;
}
field[x][y] = F * sk /2;
}
}
}