/// <summary> /// Calculate and apply any internal forces due to deformation /// to the particles connected to this spring /// </summary> public void ApplyForces() { if (StartParticle != null && EndParticle != null) { Vector dir = EndParticle.Position - StartParticle.Position; double length = dir.Magnitude(); dir /= length; double extension = length - RestLength; double T = extension * Stiffness; if ((Compression && extension < 0) || (Tension && extension > 0)) { // Apply force: Vector force = dir * T; StartParticle.ApplyForce(force); EndParticle.ApplyForce(-force); } } }