//
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;
}