Class RotationalVelocityEquation

Syncs rotational velocity of two bodies, or sets a relative velocity (motor).




B: number
G: Vec2

The Jacobian entry of this equation. 6 numbers, 3 per body (x,y,angle).

a: number
b: number
bodyA: Body

First body participating in the constraint

bodyB: Body

Second body participating in the constraint

enabled: boolean

Whether this equation is enabled or not. If true, it will be added to the solver.

epsilon: number
index: number
invC: number
lambda: number
maxBias: number

Cap the constraint violation (G*q) to this value.

maxForce: number

Max force to apply when solving.

maxForceDt: number
minForce: number

Minimum force to apply when solving.

minForceDt: number
multiplier: number

The resulting constraint multiplier from the last solve. This is mostly equivalent to the force produced by the constraint.

needsUpdate: boolean

Indicates if stiffness or relaxation was changed.

offset: number
ratio: number
relativeVelocity: number

Relative velocity.

relaxation: number

The number of time steps needed to stabilize the constraint equation. Typically between 3 and 5 time steps.

stiffness: number

The stiffness of this equation. Typically chosen to a large number (~1e7), but can be chosen somewhat freely to get a stable simulation.

timeStep: number

The default relaxation when creating a new Equation.


The default stiffness when creating a new Equation.


  • Add constraint velocity to the bodies.


    • deltalambda: number

    Returns void

  • Computes the RHS of the SPOOK equation


    • a: number
    • b: number
    • h: number

    Returns number

  • Computes G*W, where W are the body velocities

    Returns number

  • Computes G*Wlambda, where W are the body velocities

    Returns number

  • Computes G*inv(M)*G'

    Returns number

  • Computes G*inv(M)*f, where M is the mass matrix with diagonal blocks for each body, and f are the forces on the bodies.

    Returns number

  • Computes G*q, where q are the generalized body coordinates

    Returns number

  • Compute the denominator part of the SPOOK equation: C = G*inv(M)*G' + eps


    • eps: number

    Returns number

  • Multiply a jacobian entry with corresponding positions or velocities


    Returns number

  • Returns void