Package org.jbox2d.dynamics.joints
Class PulleyJoint
- java.lang.Object
-
- org.jbox2d.dynamics.joints.Joint
-
- org.jbox2d.dynamics.joints.PulleyJoint
-
public class PulleyJoint extends Joint
The pulley joint is connected to two bodies and two fixed ground points. The pulley supports a ratio such that: length1 + ratio * length2 <= constant Yes, the force transmitted is scaled by the ratio. Warning: the pulley joint can get a bit squirrelly by itself. They often work better when combined with prismatic joints. You should also cover the the anchor points with static shapes to prevent one side from going to zero length.
-
-
Field Summary
Fields Modifier and Type Field Description private float
m_constant
private Vec2
m_groundAnchorA
private Vec2
m_groundAnchorB
private float
m_impulse
private int
m_indexA
private int
m_indexB
private float
m_invIA
private float
m_invIB
private float
m_invMassA
private float
m_invMassB
private float
m_lengthA
private float
m_lengthB
private Vec2
m_localAnchorA
private Vec2
m_localAnchorB
private Vec2
m_localCenterA
private Vec2
m_localCenterB
private float
m_mass
private Vec2
m_rA
private float
m_ratio
private Vec2
m_rB
private Vec2
m_uA
private Vec2
m_uB
static float
MIN_PULLEY_LENGTH
-
Fields inherited from class org.jbox2d.dynamics.joints.Joint
m_bodyA, m_bodyB, m_edgeA, m_edgeB, m_islandFlag, m_next, m_prev, m_userData, pool
-
-
Constructor Summary
Constructors Modifier Constructor Description protected
PulleyJoint(IWorldPool argWorldPool, PulleyJointDef def)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
getAnchorA(Vec2 argOut)
get the anchor point on bodyA in world coordinates.void
getAnchorB(Vec2 argOut)
get the anchor point on bodyB in world coordinates.float
getCurrentLengthA()
float
getCurrentLengthB()
Vec2
getGroundAnchorA()
Vec2
getGroundAnchorB()
float
getLength1()
float
getLength2()
float
getLengthA()
float
getLengthB()
Vec2
getLocalAnchorA()
Vec2
getLocalAnchorB()
float
getRatio()
void
getReactionForce(float inv_dt, Vec2 argOut)
get the reaction force on body2 at the joint anchor in Newtons.float
getReactionTorque(float inv_dt)
get the reaction torque on body2 in N*m.void
initVelocityConstraints(SolverData data)
boolean
solvePositionConstraints(SolverData data)
This returns true if the position errors are within tolerance.void
solveVelocityConstraints(SolverData data)
-
Methods inherited from class org.jbox2d.dynamics.joints.Joint
create, destroy, destructor, getBodyA, getBodyB, getCollideConnected, getNext, getType, getUserData, isActive, setUserData
-
-
-
-
Field Detail
-
MIN_PULLEY_LENGTH
public static final float MIN_PULLEY_LENGTH
- See Also:
- Constant Field Values
-
m_groundAnchorA
private final Vec2 m_groundAnchorA
-
m_groundAnchorB
private final Vec2 m_groundAnchorB
-
m_lengthA
private float m_lengthA
-
m_lengthB
private float m_lengthB
-
m_localAnchorA
private final Vec2 m_localAnchorA
-
m_localAnchorB
private final Vec2 m_localAnchorB
-
m_constant
private float m_constant
-
m_ratio
private float m_ratio
-
m_impulse
private float m_impulse
-
m_indexA
private int m_indexA
-
m_indexB
private int m_indexB
-
m_uA
private final Vec2 m_uA
-
m_uB
private final Vec2 m_uB
-
m_rA
private final Vec2 m_rA
-
m_rB
private final Vec2 m_rB
-
m_localCenterA
private final Vec2 m_localCenterA
-
m_localCenterB
private final Vec2 m_localCenterB
-
m_invMassA
private float m_invMassA
-
m_invMassB
private float m_invMassB
-
m_invIA
private float m_invIA
-
m_invIB
private float m_invIB
-
m_mass
private float m_mass
-
-
Constructor Detail
-
PulleyJoint
protected PulleyJoint(IWorldPool argWorldPool, PulleyJointDef def)
-
-
Method Detail
-
getLengthA
public float getLengthA()
-
getLengthB
public float getLengthB()
-
getCurrentLengthA
public float getCurrentLengthA()
-
getCurrentLengthB
public float getCurrentLengthB()
-
getLocalAnchorA
public Vec2 getLocalAnchorA()
-
getLocalAnchorB
public Vec2 getLocalAnchorB()
-
getAnchorA
public void getAnchorA(Vec2 argOut)
Description copied from class:Joint
get the anchor point on bodyA in world coordinates.- Specified by:
getAnchorA
in classJoint
-
getAnchorB
public void getAnchorB(Vec2 argOut)
Description copied from class:Joint
get the anchor point on bodyB in world coordinates.- Specified by:
getAnchorB
in classJoint
-
getReactionForce
public void getReactionForce(float inv_dt, Vec2 argOut)
Description copied from class:Joint
get the reaction force on body2 at the joint anchor in Newtons.- Specified by:
getReactionForce
in classJoint
-
getReactionTorque
public float getReactionTorque(float inv_dt)
Description copied from class:Joint
get the reaction torque on body2 in N*m.- Specified by:
getReactionTorque
in classJoint
- Returns:
-
getGroundAnchorA
public Vec2 getGroundAnchorA()
-
getGroundAnchorB
public Vec2 getGroundAnchorB()
-
getLength1
public float getLength1()
-
getLength2
public float getLength2()
-
getRatio
public float getRatio()
-
initVelocityConstraints
public void initVelocityConstraints(SolverData data)
- Specified by:
initVelocityConstraints
in classJoint
-
solveVelocityConstraints
public void solveVelocityConstraints(SolverData data)
- Specified by:
solveVelocityConstraints
in classJoint
-
solvePositionConstraints
public boolean solvePositionConstraints(SolverData data)
Description copied from class:Joint
This returns true if the position errors are within tolerance.- Specified by:
solvePositionConstraints
in classJoint
- Returns:
-
-