class mass { position p; position oldP; //for verlet integration vector velocity; float massAmount; connection c; mass(position pt) { p=new position(pt); oldP=new position(p); velocity=new vector(p,0,0); c=new connection(); } void update() { // oldP=new position(p); // if(velocity.m<.01) // velocity.m=0; doFriction(); if(useGravity) doGravity(); doVelocity(); doBorders(); // if(velocity.m<.01) // velocity.m=0; // velocity=new vector(oldP,p); velocity.m*=.9; } void doGravity() { velocity=velocity.add(GRAVITY_VECTOR); } void doFriction() { velocity.m*=FRICTION_FORCE; // velocity.m=constrain(velocity.m,-20,20); } void doVelocity() { p=p.displace(velocity); } void doBorders() { boolean collide=false; if(p.x<10) { p.x=10; collide=true; } else if(p.x>width-10) { p.x=width-10; collide=true; } if(p.y<50) { p.y=50; collide=true; } else if(p.y>height-50) { p.y=height-50; collide=true; } if(collide) velocity.m*=.7; } float x() { return p.x; } float y() { return p.y; } }