org.jbox2d.dynamics.joints
Class PrismaticJoint

java.lang.Object
  extended by org.jbox2d.dynamics.joints.Joint
      extended by org.jbox2d.dynamics.joints.PrismaticJoint

public class PrismaticJoint
extends Joint

A prismatic joint. This joint provides one degree of freedom: translation along an axis fixed in bodyA. Relative rotation is prevented. You can use a joint limit to restrict the range of motion and a joint motor to drive the motion or to model joint friction.

Author:
Daniel

Field Summary
 float m_a1
           
 float m_a2
           
 Vec2 m_axis
           
 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
           
 Mat33 m_K
           
 LimitState m_limitState
           
 Vec2 m_localAnchorA
           
 Vec2 m_localAnchorB
           
 Vec2 m_localCenterA
           
 Vec2 m_localCenterB
           
 Vec2 m_localXAxisA
           
 Vec2 m_localYAxisA
           
 float m_lowerTranslation
           
 float m_maxMotorForce
           
 float m_motorImpulse
           
 float m_motorMass
           
 float m_motorSpeed
           
 Vec2 m_perp
           
 Vec2 m_rA
           
 Vec2 m_rB
           
 float m_referenceAngle
           
 float m_s1
           
 float m_s2
           
 float m_upperTranslation
           
 
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
PrismaticJoint(IWorldPool argWorld, PrismaticJointDef def)
           
 
Method Summary
 void enableLimit(boolean flag)
          Enable/disable the joint limit.
 void enableMotor(boolean flag)
          Enable/disable the joint motor.
 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 getJointSpeed()
          Get the current joint translation, usually in meters. public float getJointTranslation() { Vec2 pA = pool.popVec2(); Vec2 pB = pool.popVec2(); Vec2 axis = pool.popVec2(); m_bodyA.getWorldPointToOut(m_localAnchorA, pA); m_bodyB.getWorldPointToOut(m_localAnchorB, pB); pB.subLocal(pA); m_bodyA.getWorldVectorToOut(m_localXAxisA, axis); float translation = Vec2.dot(pB, axis); pool.pushVec2(3); return translation; } /** Get the current joint translation speed, usually in meters per second.
 Vec2 getLocalAnchorA()
           
 Vec2 getLocalAnchorB()
           
 float getLowerLimit()
          Get the lower joint limit, usually in meters.
 float getMotorForce(float inv_dt)
          Get the current motor force, usually in N.
 float getMotorSpeed()
          Get the motor speed, usually in meters per second.
 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()
          Get the upper joint limit, usually in meters.
 void initVelocityConstraints(SolverData data)
           
 boolean isLimitEnabled()
          Is the joint limit enabled?
 boolean isMotorEnabled()
          Is the joint motor enabled?
 void setLimits(float lower, float upper)
          Set the joint limits, usually in meters.
 void setMaxMotorForce(float force)
          Set the maximum motor force, usually in N.
 void setMotorSpeed(float speed)
          Set the motor speed, usually in meters per second.
 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_localXAxisA

public final Vec2 m_localXAxisA

m_localYAxisA

public final Vec2 m_localYAxisA

m_referenceAngle

public float m_referenceAngle

m_impulse

public final Vec3 m_impulse

m_motorImpulse

public float m_motorImpulse

m_lowerTranslation

public float m_lowerTranslation

m_upperTranslation

public float m_upperTranslation

m_maxMotorForce

public float m_maxMotorForce

m_motorSpeed

public float m_motorSpeed

m_enableLimit

public boolean m_enableLimit

m_enableMotor

public boolean m_enableMotor

m_limitState

public LimitState m_limitState

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_axis

public final Vec2 m_axis

m_perp

public final Vec2 m_perp

m_s1

public float m_s1

m_s2

public float m_s2

m_a1

public float m_a1

m_a2

public float m_a2

m_K

public final Mat33 m_K

m_motorMass

public float m_motorMass
Constructor Detail

PrismaticJoint

public PrismaticJoint(IWorldPool argWorld,
                      PrismaticJointDef def)
Method Detail

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

getJointSpeed

public float getJointSpeed()
Get the current joint translation, usually in meters. public float getJointTranslation() { Vec2 pA = pool.popVec2(); Vec2 pB = pool.popVec2(); Vec2 axis = pool.popVec2(); m_bodyA.getWorldPointToOut(m_localAnchorA, pA); m_bodyB.getWorldPointToOut(m_localAnchorB, pB); pB.subLocal(pA); m_bodyA.getWorldVectorToOut(m_localXAxisA, axis); float translation = Vec2.dot(pB, axis); pool.pushVec2(3); return translation; } /** Get the current joint translation speed, usually in meters per second.

Returns:

isLimitEnabled

public boolean isLimitEnabled()
Is the joint limit enabled?

Returns:

enableLimit

public void enableLimit(boolean flag)
Enable/disable the joint limit.

Parameters:
flag -

getLowerLimit

public float getLowerLimit()
Get the lower joint limit, usually in meters.

Returns:

getUpperLimit

public float getUpperLimit()
Get the upper joint limit, usually in meters.

Returns:

setLimits

public void setLimits(float lower,
                      float upper)
Set the joint limits, usually in meters.

Parameters:
lower -
upper -

isMotorEnabled

public boolean isMotorEnabled()
Is the joint motor enabled?

Returns:

enableMotor

public void enableMotor(boolean flag)
Enable/disable the joint motor.

Parameters:
flag -

setMotorSpeed

public void setMotorSpeed(float speed)
Set the motor speed, usually in meters per second.

Parameters:
speed -

getMotorSpeed

public float getMotorSpeed()
Get the motor speed, usually in meters per second.

Returns:

setMaxMotorForce

public void setMaxMotorForce(float force)
Set the maximum motor force, usually in N.

Parameters:
force -

getMotorForce

public float getMotorForce(float inv_dt)
Get the current motor force, usually in N.

Parameters:
inv_dt -
Returns:

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:


Copyright © 2012. All Rights Reserved.