org.jbox2d.dynamics.joints
Class RevoluteJoint

java.lang.Object
  extended by org.jbox2d.dynamics.joints.Joint
      extended by 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.

Author:
Daniel Murphy

Field Summary
 boolean m_enableLimit
           
 boolean m_enableMotor
           
 Vec3 m_impulse
           
 int m_indexA
           
 int m_indexB
           
 float m_invIA
           
 float m_invIB
           
 float m_invMassA
           
 float m_invMassB
           
 LimitState m_limitState
           
 Vec2 m_localAnchorA
           
 Vec2 m_localAnchorB
           
 Vec2 m_localCenterA
           
 Vec2 m_localCenterB
           
 float m_lowerAngle
           
 Mat33 m_mass
           
 float m_maxMotorTorque
           
 float m_motorImpulse
           
 float m_motorMass
           
 float m_motorSpeed
           
 Vec2 m_rA
           
 Vec2 m_rB
           
 float m_referenceAngle
           
 float m_upperAngle
           
 
Fields inherited from class org.jbox2d.dynamics.joints.Joint
m_bodyA, m_bodyB, m_collideConnected, m_edgeA, m_edgeB, m_index, m_islandFlag, m_next, m_prev, m_type, m_userData, pool
 
Constructor Summary
RevoluteJoint(IWorldPool argWorld, RevoluteJointDef def)
           
 
Method Summary
 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()
           
 float getLowerLimit()
           
 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 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
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

m_localAnchorA

public final Vec2 m_localAnchorA

m_localAnchorB

public final Vec2 m_localAnchorB

m_impulse

public final Vec3 m_impulse

m_motorImpulse

public float m_motorImpulse

m_enableMotor

public boolean m_enableMotor

m_maxMotorTorque

public float m_maxMotorTorque

m_motorSpeed

public float m_motorSpeed

m_enableLimit

public boolean m_enableLimit

m_referenceAngle

public float m_referenceAngle

m_lowerAngle

public float m_lowerAngle

m_upperAngle

public float m_upperAngle

m_indexA

public int m_indexA

m_indexB

public int m_indexB

m_rA

public final Vec2 m_rA

m_rB

public final Vec2 m_rB

m_localCenterA

public final Vec2 m_localCenterA

m_localCenterB

public final Vec2 m_localCenterB

m_invMassA

public float m_invMassA

m_invMassB

public float m_invMassB

m_invIA

public float m_invIA

m_invIB

public float m_invIB

m_mass

public final Mat33 m_mass

m_motorMass

public float m_motorMass

m_limitState

public LimitState m_limitState
Constructor Detail

RevoluteJoint

public RevoluteJoint(IWorldPool argWorld,
                     RevoluteJointDef def)
Method Detail

initVelocityConstraints

public void initVelocityConstraints(SolverData data)
Specified by:
initVelocityConstraints in class Joint

solveVelocityConstraints

public void solveVelocityConstraints(SolverData data)
Specified by:
solveVelocityConstraints in class Joint

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 class Joint
Returns:

getAnchorA

public void getAnchorA(Vec2 argOut)
Description copied from class: Joint
get the anchor point on bodyA in world coordinates.

Specified by:
getAnchorA in class Joint

getAnchorB

public void getAnchorB(Vec2 argOut)
Description copied from class: Joint
get the anchor point on bodyB in world coordinates.

Specified by:
getAnchorB in class Joint

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 class Joint

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 class Joint
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)

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)


Copyright © 2012. All Rights Reserved.