class mass { position p; vector velocity; float massAmount; mass(position pt) { p=new position(pt); velocity=new vector(p,0,0); } void update() { if(useGravity) doGravity(); doFriction(); doVelocity(); doBorders(); } void doGravity() { velocity=velocity.add(GRAVITY_VECTOR); } void doFriction() { velocity.m*=FRICTION_FORCE; } void doVelocity() { if(useRK) p=p.displace(velocity); else 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; } }