//
public class Spring
{
public void setDamping(double t) { damp = t; } // SET THE DAMPING FRICTION
public void setForce (double t) { F = t; } // APPLY AN EXTERNAL FORCE
public void setMass (double t) { mass = t; } // SET THE OBJECT'S MASS
public double getPosition() { return P; } // GET CURRENT SPRING POSITION
public void update(double elapsed) { // USER CALLS THIS TO INTEGRATE
dV += (F - P) / mass * elapsed; // FORCE → VELOCITY
P = (P + dV) * (1 - damp * elapsed); // VELOCITY → POSITION
}
private double P = 0, dV = 0, F = 0, mass = 1.0, damp = 1.0;
}