vector getSpringForce(position from,position to,float desiredLength,float constant) { vector force=new vector(from,to); float distance=dist(from,to); if(distance!=0) { vector deltaLength; // float delta=(distance-desiredLength); // force.m=delta; // position targetPos=new position(force.ep()); position targetPos; if(useRK) targetPos=new position(to.displaceRK(force.a+180,desiredLength)); else targetPos=new position(to.displace(force.a+180,desiredLength)); // position targetPos=new position(to.displace(getHeading(to,from),desiredLength)); deltaLength=new vector(from,targetPos); // fill(255,0,0); // ellipse(targetPos.x,targetPos.y,5,5); force=new vector(deltaLength); force.m*=constant; // force.m=constrain(force.m,-50,50); } return force; } float getSpringForceScalar(float from,float to,float desiredLength,float constant) { float force=to; force-=from; if(force!=0) { float deltaLength=force; float targetLength=desiredLength; deltaLength=deltaLength-targetLength; force=deltaLength; force*=constant; } return force; }