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)) <= jointMaxThis 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
Constructor
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.0)
Construct a new PulleyJoint.
Parameters:
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.
Variables
anchor1:Vec2
Anchor point on first Body.
This anchor point is defined in the local coordinate system of body1.
anchor2:Vec2
Anchor point on second Body.
This anchor point is defined in the local coordinate system of body2.
anchor3:Vec2
Anchor point on third Body.
This anchor point is defined in the local coordinate system of body3.
anchor4:Vec2
Anchor point on fourth Body.
This anchor point is defined in the local coordinate system of body4.
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.
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.
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.
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.
Methods
inlineisSlack():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.
Throws:
# | If any of the bodies is null. |
---|