class cell { position p; vector velocity; float velocityDamping=0.007; float mass; connection c; gene g; cell(position pt) { p=new position(pt); velocity=new vector(p,0,0); c=new connection(); } void update() { if(velocity.m<.01) velocity.m=0; doFriction(); if(useGravity) doGravity(); doVelocity(); doBorders(); if(velocity.m<.01) velocity.m=0; } void doGravity() { velocity=velocity.add(GRAVITY_VECTOR); } void doFriction() { velocity.m*=FRICTION_FORCE; velocity.m*=1-velocityDamping; // 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<120) { p.y=120; 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; } }