Packageorg.MARS.dynamics.force.spring
Classpublic class Spring
InheritanceSpring Inheritance SimpleForceGenerator
ImplementsIForceGenerator
SubclassesBungee, RigidBodySpring

Creates a spring force

Due to the need for spring forces to update within an ISimulatable's integration, there is 1 Spring element per force generation. So, despite needing 2 elements to connect, only the first element has the spring force generated for. The supporting methods clone, invert and the static method createDoubleSidedSpring are used to ease this duality.

In the future a more monolithic approach may be taken to integration such that more complex forces can be calculated only once per step.

TODO: comment

See also

IForceGenerator


Public Properties
 PropertyDefined by
  restLength : Number
[write-only]
Spring
Protected Properties
 PropertyDefined by
  damp : Number
damping
Spring
  element1 : ISimulatable
element to generate spring force on
Spring
  element2 : ISimulatable
element to connect "other" end of spring to
Spring
 Inherited_force : Vector
force to apply to element(s)
SimpleForceGenerator
  k : Number
spring coefficient (0 - 1.0)
Spring
  _restLength : Number
the spring's happy length (where no force is generated
Spring
Public Methods
 MethodDefined by
  
Spring(element1:ISimulatable, element2:ISimulatable, k:Number = 0.01, damp:Number = 0.4)
Constructs a new Spring
Spring
  
clone(invert:Boolean = true):Spring
Clone's a Spring for use with another element
Spring
  
createDoubleSidedSpring(element1:ISimulatable, element2:ISimulatable, k:Number = 0.01, damp:Number = 0.1):void
[static] Creates forces for both elements
Spring
  
generate(element:ISimulatable):void
Spring
  
Spring
  
Spring
  
invert():void
Inverts the spring so that the force is applied to element2 instead of 1
Spring
Property detail
dampproperty
protected var damp:Number

damping

element1property 
protected var element1:ISimulatable

element to generate spring force on

element2property 
protected var element2:ISimulatable

element to connect "other" end of spring to

kproperty 
protected var k:Number

spring coefficient (0 - 1.0)

_restLengthproperty 
protected var _restLength:Number

the spring's happy length (where no force is generated

restLengthproperty 
restLength:Number  [write-only]Implementation
    public function set restLength(value:Number):void
Constructor detail
Spring()constructor
public function Spring(element1:ISimulatable, element2:ISimulatable, k:Number = 0.01, damp:Number = 0.4)

Constructs a new Spring

Parameters
element1:ISimulatable — element to generate spring force on
 
element2:ISimulatable — element to connect other end of spring to
 
k:Number (default = 0.01) — spring constant
 
damp:Number (default = 0.4) — damping coefficient
Method detail
clone()method
public function clone(invert:Boolean = true):Spring

Clone's a Spring for use with another element

Parameters
invert:Boolean (default = true) — specifies whether to invert the spring so that the force gets applied to element2

Returns
Spring — the newly cloned Spring
createDoubleSidedSpring()method 
public static function createDoubleSidedSpring(element1:ISimulatable, element2:ISimulatable, k:Number = 0.01, damp:Number = 0.1):void

Creates forces for both elements

Parameters
element1:ISimulatable
 
element2:ISimulatable
 
k:Number (default = 0.01)
 
damp:Number (default = 0.1)
generate()method 
public override function generate(element:ISimulatable):voidParameters
element:ISimulatable
getPoint1InWorldSpace()method 
public function getPoint1InWorldSpace():Vector

Returns
Vector
getPoint2InWorldSpace()method 
public function getPoint2InWorldSpace():Vector

Returns
Vector
invert()method 
public function invert():void

Inverts the spring so that the force is applied to element2 instead of 1