26 #ifndef BT_GENERIC_6DOF_CONSTRAINT_H
27 #define BT_GENERIC_6DOF_CONSTRAINT_H
35 #ifdef BT_USE_DOUBLE_PRECISION
36 #define btGeneric6DofConstraintData2 btGeneric6DofConstraintDoubleData2
37 #define btGeneric6DofConstraintDataName "btGeneric6DofConstraintDoubleData2"
39 #define btGeneric6DofConstraintData2 btGeneric6DofConstraintData
40 #define btGeneric6DofConstraintDataName "btGeneric6DofConstraintData"
165 for (
int i = 0; i < 3; i++)
186 for (
int i = 0; i < 3; i++)
228 #define BT_6DOF_FLAGS_AXIS_SHIFT 3
455 for (
int i = 0; i < 3; i++)
461 for (
int i = 0; i < 3; i++)
467 for (
int i = 0; i < 3; i++)
473 for (
int i = 0; i < 3; i++)
601 for (i = 0; i < 3; i++)
btFixedConstraint btRigidBody & rbB
btFixedConstraint btRigidBody const btTransform & frameInA
btFixedConstraint btRigidBody const btTransform const btTransform & frameInB
#define btGeneric6DofConstraintDataName
btScalar getAngle(int axis_index) const
Get the relative Euler angle.
btTranslationalLimitMotor * getTranslationalLimitMotor()
Retrieves the limit informacion.
const btTransform & getCalculatedTransformA() const
Gets the global transform of the offset for body A.
BT_DECLARE_ALIGNED_ALLOCATOR()
void setAngularUpperLimit(const btVector3 &angularUpper)
virtual void getInfo2(btConstraintInfo2 *info)
const btTransform & getFrameOffsetA() const
void getInfo2NonVirtual(btConstraintInfo2 *info, const btTransform &transA, const btTransform &transB, const btVector3 &linVelA, const btVector3 &linVelB, const btVector3 &angVelA, const btVector3 &angVelB)
virtual void calcAnchorPos(void)
void setUseLinearReferenceFrameA(bool linearReferenceFrameA)
void getAngularLowerLimit(btVector3 &angularLower) const
btTransform m_calculatedTransformB
void buildLinearJacobian(btJacobianEntry &jacLinear, const btVector3 &normalWorld, const btVector3 &pivotAInW, const btVector3 &pivotBInW)
virtual void setParam(int num, btScalar value, int axis=-1)
#define btGeneric6DofConstraintData2
void setLinearLowerLimit(const btVector3 &linearLower)
btVector3 m_calculatedAxis[3]
void calculateLinearInfo()
virtual int calculateSerializeBufferSize() const
btVector3 m_calculatedLinearDiff
btJacobianEntry m_jacAng[3]
btRotationalLimitMotor m_angularLimits[3]
void setLimit(int axis, btScalar lo, btScalar hi)
btGeneric6DofConstraint(btRigidBody &rbA, btRigidBody &rbB, const btTransform &frameInA, const btTransform &frameInB, bool useLinearReferenceFrameA)
bool m_useSolveConstraintObsolete
for backwards compatibility during the transition to 'getInfo/getInfo2'
void setUseFrameOffset(bool frameOffsetOnOff)
int setLinearLimits(btConstraintInfo2 *info, int row, const btTransform &transA, const btTransform &transB, const btVector3 &linVelA, const btVector3 &linVelB, const btVector3 &angVelA, const btVector3 &angVelB)
btJacobianEntry m_jacLinear[3]
3 orthogonal linear constraints
virtual int getFlags() const
bool isLimited(int limitIndex) const
Test limit.
btScalar getRelativePivotPosition(int axis_index) const
Get the relative position of the constraint pivot.
void setAxis(const btVector3 &axis1, const btVector3 &axis2)
bool getUseFrameOffset() const
const btTransform & getFrameOffsetB() const
virtual btScalar getParam(int num, int axis=-1) const
return the local value of parameter
bool getUseLinearReferenceFrameA() const
bool m_useLinearReferenceFrameA
const btTransform & getCalculatedTransformB() const
Gets the global transform of the offset for body B.
int get_limit_motor_info2(btRotationalLimitMotor *limot, const btTransform &transA, const btTransform &transB, const btVector3 &linVelA, const btVector3 &linVelB, const btVector3 &angVelA, const btVector3 &angVelB, btConstraintInfo2 *info, int row, btVector3 &ax1, int rotational, int rotAllowed=false)
void setLinearUpperLimit(const btVector3 &linearUpper)
void getAngularUpperLimit(btVector3 &angularUpper) const
void setFrames(const btTransform &frameA, const btTransform &frameB)
btTranslationalLimitMotor m_linearLimits
void calculateAngleInfo()
calcs the euler angles between the two bodies.
void getLinearLowerLimit(btVector3 &linearLower) const
virtual void buildJacobian()
performs Jacobian calculation, and also calculates angle differences and axis
void buildAngularJacobian(btJacobianEntry &jacAngular, const btVector3 &jointAxisW)
void calculateTransforms(const btTransform &transA, const btTransform &transB)
Calcs global transform of the offsets.
void getInfo1NonVirtual(btConstraintInfo1 *info)
btRotationalLimitMotor * getRotationalLimitMotor(int index)
Retrieves the angular limit informacion.
btVector3 m_calculatedAxisAngleDiff
btGeneric6DofConstraint & operator=(btGeneric6DofConstraint &other)
btVector3 getAxis(int axis_index) const
Get the rotation axis in global coordinates.
virtual void getInfo1(btConstraintInfo1 *info)
bool testAngularLimitMotor(int axis_index)
Test angular limit.
void getLinearUpperLimit(btVector3 &linearUpper) const
int setAngularLimits(btConstraintInfo2 *info, int row_offset, const btTransform &transA, const btTransform &transB, const btVector3 &linVelA, const btVector3 &linVelB, const btVector3 &angVelA, const btVector3 &angVelB)
btTransform m_calculatedTransformA
void setAngularLowerLimit(const btVector3 &angularLower)
bool m_useOffsetForConstraintFrame
virtual const char * serialize(void *dataBuffer, btSerializer *serializer) const
fills the dataBuffer and returns the struct name (and 0 on failure)
void updateRHS(btScalar timeStep)
float btScalar
The btScalar type abstracts floating point numbers, to easily switch between double and single floati...
#define ATTRIBUTE_ALIGNED16(a)
SIMD_FORCE_INLINE btScalar btNormalizeAngle(btScalar angleInRadians)
#define SIMD_FORCE_INLINE
btTypedConstraint(btTypedConstraintType type, btRigidBody &rbA)
btVector3
btVector3 can be used to represent 3D points and vectors. It has an un-used w component to suit 16-by...
Rotation Limit structure for generic joints.
btScalar m_currentPosition
How much is violated this limit.
btScalar m_targetVelocity
target motor velocity
btRotationalLimitMotor(const btRotationalLimitMotor &limot)
btScalar m_hiLimit
joint limit
btScalar m_normalCFM
Relaxation factor.
btScalar m_maxMotorForce
max force on motor
btScalar m_damping
Damping.
btScalar m_bounce
restitution factor
btScalar m_loLimit
joint limit
btScalar m_currentLimitError
btScalar m_stopERP
Error tolerance factor when joint is at limit.
bool needApplyTorques() const
Need apply correction.
bool isLimited() const
Is limited.
btScalar m_accumulatedImpulse
int testLimitValue(btScalar test_value)
calculates error
btScalar m_maxLimitForce
max force on limit
int m_currentLimit
current value of angle
btScalar solveAngularLimits(btScalar timeStep, btVector3 &axis, btScalar jacDiagABInv, btRigidBody *body0, btRigidBody *body1)
apply the correction impulses for two bodies
btScalar m_stopCFM
Constraint force mixing factor when joint is at limit.
btVector3 m_stopERP
Error tolerance factor when joint is at limit.
int m_currentLimit[3]
Current relative offset of constraint frames.
btScalar solveLinearAxis(btScalar timeStep, btScalar jacDiagABInv, btRigidBody &body1, const btVector3 &pointInA, btRigidBody &body2, const btVector3 &pointInB, int limit_index, const btVector3 &axis_normal_on_a, const btVector3 &anchorPos)
btVector3 m_maxMotorForce
max force on motor
btVector3 m_accumulatedImpulse
int testLimitValue(int limitIndex, btScalar test_value)
btVector3 m_currentLinearDiff
How much is violated this limit.
btVector3 m_normalCFM
Bounce parameter for linear limit.
bool needApplyForce(int limitIndex) const
btVector3 m_currentLimitError
btTranslationalLimitMotor()
btScalar m_limitSoftness
Softness for linear limit.
btVector3 m_targetVelocity
target motor velocity
btVector3 m_lowerLimit
the constraint lower limits
btTranslationalLimitMotor(const btTranslationalLimitMotor &other)
bool isLimited(int limitIndex) const
Test limit.
btScalar m_damping
Damping for linear limit.
btVector3 m_upperLimit
the constraint upper limits
SyclQueue void void size_t num_bytes void
btTransformFloatData m_rbBFrame
int m_useLinearReferenceFrameA
btVector3FloatData m_linearUpperLimit
int m_useOffsetForConstraintFrame
btTypedConstraintData m_typeConstraintData
btVector3FloatData m_linearLowerLimit
btVector3FloatData m_angularLowerLimit
btVector3FloatData m_angularUpperLimit
btTransformFloatData m_rbAFrame
btVector3DoubleData m_linearUpperLimit
btVector3DoubleData m_angularLowerLimit
int m_useOffsetForConstraintFrame
btTypedConstraintDoubleData m_typeConstraintData
btTransformDoubleData m_rbAFrame
btVector3DoubleData m_linearLowerLimit
btVector3DoubleData m_angularUpperLimit
btTransformDoubleData m_rbBFrame
int m_useLinearReferenceFrameA
this structure is not used, except for loading pre-2.82 .bullet files