package flare.physics { /** * Represents a Spring in a physics simulation. A spring connects two * particles and is defined by the springs rest length, spring tension, * and damping (friction) co-efficient. */ public class Spring { /** The first particle attached to the spring. */ public var p1:Particle; /** The second particle attached to the spring. */ public var p2:Particle; /** The rest length of the spring. */ public var restLength:Number; /** The tension of the spring. */ public var tension:Number; /** The damping (friction) co-efficient of the spring. */ public var damping:Number; /** Flag indicating that the spring is scheduled for removal. */ public var die:Boolean; /** Tag property for storing an arbitrary value. */ public var tag:uint; /** * Creates a new Spring with given parameters. * @param p1 the first particle attached to the spring * @param p2 the second particle attached to the spring * @param restLength the rest length of the spring * @param tension the tension of the spring * @param damping the damping (friction) co-efficient of the spring */ public function Spring(p1:Particle, p2:Particle, restLength:Number=10, tension:Number=0.1, damping:Number=0.1) { init(p1, p2, restLength, tension, damping); } /** * Initializes an existing spring instance. * @param p1 the first particle attached to the spring * @param p2 the second particle attached to the spring * @param restLength the rest length of the spring * @param tension the tension of the spring * @param damping the damping (friction) co-efficient of the spring */ public function init(p1:Particle, p2:Particle, restLength:Number=10, tension:Number=0.1, damping:Number=0.1):void { this.p1 = p1; this.p2 = p2; this.restLength = restLength; this.tension = tension; this.damping = damping; this.die = false; this.tag = 0; } /** * "Kills" this spring, scheduling it for removal in the next * simulation cycle. */ public function kill():void { this.die = true; } } // end of class Spring }