Package org.jbox2d.dynamics.joints
Class PrismaticJoint
- java.lang.Object
-
- org.jbox2d.dynamics.joints.Joint
-
- 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.
-
-
Field Summary
Fields Modifier and Type Field Description private float
m_a1
private float
m_a2
private Vec2
m_axis
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 Mat33
m_K
private LimitState
m_limitState
protected Vec2
m_localAnchorA
protected Vec2
m_localAnchorB
private Vec2
m_localCenterA
private Vec2
m_localCenterB
protected Vec2
m_localXAxisA
protected Vec2
m_localYAxisA
private float
m_lowerTranslation
private float
m_maxMotorForce
private float
m_motorImpulse
private float
m_motorMass
private float
m_motorSpeed
private Vec2
m_perp
protected float
m_referenceAngle
private float
m_s1
private float
m_s2
private float
m_upperTranslation
-
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
PrismaticJoint(IWorldPool argWorld, PrismaticJointDef def)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description 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.float
getJointTranslation()
Vec2
getLocalAnchorA()
Vec2
getLocalAnchorB()
Vec2
getLocalAxisA()
float
getLowerLimit()
Get the lower joint limit, usually in meters.float
getMaxMotorForce()
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
getReferenceAngle()
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
-
-
-
-
Field Detail
-
m_localAnchorA
protected final Vec2 m_localAnchorA
-
m_localAnchorB
protected final Vec2 m_localAnchorB
-
m_localXAxisA
protected final Vec2 m_localXAxisA
-
m_localYAxisA
protected final Vec2 m_localYAxisA
-
m_referenceAngle
protected float m_referenceAngle
-
m_impulse
private final Vec3 m_impulse
-
m_motorImpulse
private float m_motorImpulse
-
m_lowerTranslation
private float m_lowerTranslation
-
m_upperTranslation
private float m_upperTranslation
-
m_maxMotorForce
private float m_maxMotorForce
-
m_motorSpeed
private float m_motorSpeed
-
m_enableLimit
private boolean m_enableLimit
-
m_enableMotor
private boolean m_enableMotor
-
m_limitState
private LimitState m_limitState
-
m_indexA
private int m_indexA
-
m_indexB
private int m_indexB
-
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_axis
private final Vec2 m_axis
-
m_perp
private final Vec2 m_perp
-
m_s1
private float m_s1
-
m_s2
private float m_s2
-
m_a1
private float m_a1
-
m_a2
private float m_a2
-
m_K
private final Mat33 m_K
-
m_motorMass
private float m_motorMass
-
-
Constructor Detail
-
PrismaticJoint
protected 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 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:
-
getJointSpeed
public float getJointSpeed()
Get the current joint translation, usually in meters.
-
getJointTranslation
public float getJointTranslation()
-
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:
-
getMaxMotorForce
public float getMaxMotorForce()
-
getReferenceAngle
public float getReferenceAngle()
-
getLocalAxisA
public Vec2 getLocalAxisA()
-
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:
-
-