Package org.jbox2d.dynamics.joints
Class RevoluteJoint
- java.lang.Object
-
- org.jbox2d.dynamics.joints.Joint
-
- org.jbox2d.dynamics.joints.RevoluteJoint
-
public class RevoluteJoint extends Joint
A revolute joint constrains two bodies to share a common point while they are free to rotate about the point. The relative rotation about the shared point is the joint angle. You can limit the relative rotation with a joint limit that specifies a lower and upper angle. You can use a motor to drive the relative rotation about the shared point. A maximum motor torque is provided so that infinite forces are not generated.
-
-
Field Summary
Fields Modifier and Type Field Description private boolean
m_enableLimit
private boolean
m_enableMotor
private Vec3
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 LimitState
m_limitState
protected Vec2
m_localAnchorA
protected Vec2
m_localAnchorB
private Vec2
m_localCenterA
private Vec2
m_localCenterB
private float
m_lowerAngle
private Mat33
m_mass
private float
m_maxMotorTorque
private float
m_motorImpulse
private float
m_motorMass
private float
m_motorSpeed
private Vec2
m_rA
private Vec2
m_rB
protected float
m_referenceAngle
private float
m_upperAngle
-
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
RevoluteJoint(IWorldPool argWorld, RevoluteJointDef def)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
enableLimit(boolean flag)
void
enableMotor(boolean flag)
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
getJointAngle()
float
getJointSpeed()
Vec2
getLocalAnchorA()
Vec2
getLocalAnchorB()
float
getLowerLimit()
float
getMaxMotorTorque()
float
getMotorSpeed()
float
getMotorTorque(float inv_dt)
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.float
getReferenceAngle()
float
getUpperLimit()
void
initVelocityConstraints(SolverData data)
boolean
isLimitEnabled()
boolean
isMotorEnabled()
void
setLimits(float lower, float upper)
void
setMaxMotorTorque(float torque)
void
setMotorSpeed(float speed)
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
-
m_localAnchorA
protected final Vec2 m_localAnchorA
-
m_localAnchorB
protected final Vec2 m_localAnchorB
-
m_impulse
private final Vec3 m_impulse
-
m_motorImpulse
private float m_motorImpulse
-
m_enableMotor
private boolean m_enableMotor
-
m_maxMotorTorque
private float m_maxMotorTorque
-
m_motorSpeed
private float m_motorSpeed
-
m_enableLimit
private boolean m_enableLimit
-
m_referenceAngle
protected float m_referenceAngle
-
m_lowerAngle
private float m_lowerAngle
-
m_upperAngle
private float m_upperAngle
-
m_indexA
private int m_indexA
-
m_indexB
private int m_indexB
-
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 final Mat33 m_mass
-
m_motorMass
private float m_motorMass
-
m_limitState
private LimitState m_limitState
-
-
Constructor Detail
-
RevoluteJoint
protected RevoluteJoint(IWorldPool argWorld, RevoluteJointDef def)
-
-
Method Detail
-
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:
-
getLocalAnchorA
public Vec2 getLocalAnchorA()
-
getLocalAnchorB
public Vec2 getLocalAnchorB()
-
getReferenceAngle
public float getReferenceAngle()
-
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:
-
getJointAngle
public float getJointAngle()
-
getJointSpeed
public float getJointSpeed()
-
isMotorEnabled
public boolean isMotorEnabled()
-
enableMotor
public void enableMotor(boolean flag)
-
getMotorTorque
public float getMotorTorque(float inv_dt)
-
setMotorSpeed
public void setMotorSpeed(float speed)
-
setMaxMotorTorque
public void setMaxMotorTorque(float torque)
-
getMotorSpeed
public float getMotorSpeed()
-
getMaxMotorTorque
public float getMaxMotorTorque()
-
isLimitEnabled
public boolean isLimitEnabled()
-
enableLimit
public void enableLimit(boolean flag)
-
getLowerLimit
public float getLowerLimit()
-
getUpperLimit
public float getUpperLimit()
-
setLimits
public void setLimits(float lower, float upper)
-
-