Class 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 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
    • Method Detail

      • 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:
      • 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 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)
      • 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)