particle[] Particles = new particle[NUM_PARTICLES];
int accelerationFrames=3;
float accelerationMult=1.005;
for(int i = 0; i < NUM_PARTICLES; i++) { Particles[i] = new particle();}
if(frameCount<startDelay){ ellipse(w/2,w/2,frameCount/2,frameCount/8);ellipse(w/2,w/2,frameCount/8,frameCount/2); return;}
if (mousePressed&&mouseButton==LEFT){ Particles[0].mass=300;Particles[0].position.x=mouseX;Particles[0].position.y=mouseY;Particles[0].velocity.x=0;Particles[0].velocity.y=0;}
else Particles[0].mass=0;
for(int i = 1; i < NUM_PARTICLES; i++) { Particles[i].update(); }
position = new PVector();
velocity = new PVector();
velocity.x = random(-power,power);
velocity.y = random(-power,power);
void followGravity(PVector location, float mass1, float mass2){
PVector unitVector = new PVector();
unitVector = location.get();
unitVector.sub(position);
float dist = location.dist(position);
PVector force = new PVector();
g *= ((mass1*mass2)/(dist));
force.x = (float)(g*(double)unitVector.x);
force.y = (float)(g*(double)unitVector.y);
if(frameCount<startDelay+accelerationFrames){
velocity.x*=accelerationMult;
velocity.y*=accelerationMult;
for(int i = 0; i < NUM_PARTICLES; i++) { if(position.x != Particles[i].position.x || position.y != Particles[i].position.y)
{ followGravity(Particles[i].position, mass,Particles[i].mass); }
PVector center = new PVector(w/2,w/2);
if(position.dist(center)>w/2) {
PVector normalVec = new PVector();
normalVec=position.get();
point(position.x,position.y);
void keyPressed(){frameCount=0;setup();}
void mousePressed(){if(mouseButton==RIGHT){frameCount=0;setup();}}