class nape.constraint.PulleyJoint extends Constraint

Available on all platforms

PulleyJoint limiting the weighted sum of distances between 2 pairs of 4 local anchor points of Bodies. *

* The equation for this constraint could be written like: *

 * jointMin <= distance(body2.localPointToWorld(anchor2), body1.localPointToWorld(anchor1))
 *   + ratio * distance(body4.localPointToWorld(anchor4), body3.localPointToWorld(anchor3)) <= jointMax
 * 
* This joint is not designed to work when either of these pairs achieves a distance of 0, it will still work * but may not be entirely ideal. !1*

* This constraint can be used in a full 4-body set up, or a 3-body set up or a 2-body set up permitting * any arrangement as long as body1 != body2 and body3 != body4

Instance Fields

var anchor1:Vec2

Anchor point on first Body. *

* This anchor point is defined in the local coordinate system of body1.

var anchor2:Vec2

Anchor point on second Body. *

* This anchor point is defined in the local coordinate system of body2.

var anchor3:Vec2

Anchor point on third Body. *

* This anchor point is defined in the local coordinate system of body3.

var anchor4:Vec2

Anchor point on fourth Body. *

* This anchor point is defined in the local coordinate system of body4.

var body1:Null<Body>

First Body in constraint. *

* This value may be null, but trying to simulate the constraint whilst * this body is null will result in an error.

var body2:Null<Body>

Second Body in constraint. *

* This value may be null, but trying to simulate the constraint whilst * this body is null will result in an error.

var body3:Null<Body>

Third Body in constraint. *

* This value may be null, but trying to simulate the constraint whilst * this body is null will result in an error.

var body4:Null<Body>

Fourth Body in constraint. *

* This value may be null, but trying to simulate the constraint whilst * this body is null will result in an error.

var jointMax:Float

Upper bound for constraint. *

* This value must be greater than or equal to jointMin.

var jointMin:Float

Lower bound for constraint. *

* This value must be less than or equal to jointMax, and greater equal to 0.

var ratio:Float

Ratio property of constraint. * * @default 1

function new(body1:Null<Body>, body2:Null<Body>, body3:Null<Body>, body4:Null<Body>, anchor1:Vec2, anchor2:Vec2, anchor3:Vec2, anchor4:Vec2, jointMin:Float, jointMax:Float, ?ratio:Float = 1.0f):Void

Construct a new PulleyJoint. * *

body1

The first body in PulleyJoint. *

body2

The second body in PulleyJoint. *

body3

The third body in PulleyJoint. *

body4

The fourth body in PulleyJoint. *

anchor1

The first local anchor for joint. *

anchor2

The second local anchor for joint. *

anchor3

The third local anchor for joint. *

anchor4

The fourth local anchor for joint. *

jointMin

The lower bound for constraint. *

jointMax

The upper bound for constraint. *

ratio

The ratio for constraint. *

returns

The constructed PulleyJoint.

function bodyImpulse(body:Body):Vec3

@inheritDoc

function impulse():MatMN

@inheritDoc *

* For this constraint, the MatMN will be 1x1.

function isSlack():Bool

Determine if constraint is slack. *

* This constraint is slack if the positional error is within * the bounds of (jointMin, jointMax). * *

returns

True if positional error of constraint is between the limits indicating that the constraint is not doing any work.

function visitBodies(lambda:Body ->Void):Void

@inheritDoc