40 #ifndef BT_GENERIC_6DOF_CONSTRAINT2_H
41 #define BT_GENERIC_6DOF_CONSTRAINT2_H
49 #ifdef BT_USE_DOUBLE_PRECISION
50 #define btGeneric6DofSpring2ConstraintData2 btGeneric6DofSpring2ConstraintDoubleData2
51 #define btGeneric6DofSpring2ConstraintDataName "btGeneric6DofSpring2ConstraintDoubleData2"
53 #define btGeneric6DofSpring2ConstraintData2 btGeneric6DofSpring2ConstraintData
54 #define btGeneric6DofSpring2ConstraintDataName "btGeneric6DofSpring2ConstraintData"
204 for (
int i = 0; i < 3; i++)
236 for (
int i = 0; i < 3; i++)
270 #define BT_6DOF_FLAGS_AXIS_SHIFT2 4
364 for (
int i = 0; i < 3; i++)
370 for (
int i = 0; i < 3; i++)
376 for (
int i = 0; i < 3; i++)
382 for (
int i = 0; i < 3; i++)
388 for (
int i = 0; i < 3; i++)
394 for (
int i = 0; i < 3; i++)
400 for (
int i = 0; i < 3; i++)
406 for (
int i = 0; i < 3; i++)
461 void setServo(
int index,
bool onOff);
597 for (i = 0; i < 3; i++)
613 dof->m_angularLowerLimit.m_floats[3] = 0;
614 dof->m_angularUpperLimit.m_floats[3] = 0;
615 dof->m_angularBounce.m_floats[3] = 0;
616 dof->m_angularStopERP.m_floats[3] = 0;
617 dof->m_angularStopCFM.m_floats[3] = 0;
618 dof->m_angularMotorERP.m_floats[3] = 0;
619 dof->m_angularMotorCFM.m_floats[3] = 0;
620 dof->m_angularTargetVelocity.m_floats[3] = 0;
621 dof->m_angularMaxMotorForce.m_floats[3] = 0;
622 dof->m_angularServoTarget.m_floats[3] = 0;
623 dof->m_angularSpringStiffness.m_floats[3] = 0;
624 dof->m_angularSpringDamping.m_floats[3] = 0;
625 dof->m_angularEquilibriumPoint.m_floats[3] = 0;
626 for (i = 0; i < 4; i++)
648 for (i = 0; i < 4; i++)
659 dof->m_padding1[0] = 0;
660 dof->m_padding1[1] = 0;
661 dof->m_padding1[2] = 0;
662 dof->m_padding1[3] = 0;
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum const void *lists _GL_VOID_RET _GL_VOID const GLdouble *equation _GL_VOID_RET _GL_VOID GLdouble GLdouble blue _GL_VOID_RET _GL_VOID GLfloat GLfloat blue _GL_VOID_RET _GL_VOID GLint GLint blue _GL_VOID_RET _GL_VOID GLshort GLshort blue _GL_VOID_RET _GL_VOID GLubyte GLubyte blue _GL_VOID_RET _GL_VOID GLuint GLuint blue _GL_VOID_RET _GL_VOID GLushort GLushort blue _GL_VOID_RET _GL_VOID GLbyte GLbyte GLbyte alpha _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble alpha _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat alpha _GL_VOID_RET _GL_VOID GLint GLint GLint alpha _GL_VOID_RET _GL_VOID GLshort GLshort GLshort alpha _GL_VOID_RET _GL_VOID GLubyte GLubyte GLubyte alpha _GL_VOID_RET _GL_VOID GLuint GLuint GLuint alpha _GL_VOID_RET _GL_VOID GLushort GLushort GLushort alpha _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLint GLsizei GLsizei GLenum type _GL_VOID_RET _GL_VOID GLsizei GLenum GLenum const void *pixels _GL_VOID_RET _GL_VOID const void *pointer _GL_VOID_RET _GL_VOID GLdouble v _GL_VOID_RET _GL_VOID GLfloat v _GL_VOID_RET _GL_VOID GLint GLint i2 _GL_VOID_RET _GL_VOID GLint j _GL_VOID_RET _GL_VOID GLfloat param _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble GLdouble GLdouble zFar _GL_VOID_RET _GL_UINT GLdouble *equation _GL_VOID_RET _GL_VOID GLenum GLint *params _GL_VOID_RET _GL_VOID GLenum GLfloat *v _GL_VOID_RET _GL_VOID GLenum GLfloat *params _GL_VOID_RET _GL_VOID GLfloat *values _GL_VOID_RET _GL_VOID GLushort *values _GL_VOID_RET _GL_VOID GLenum GLfloat *params _GL_VOID_RET _GL_VOID GLenum GLdouble *params _GL_VOID_RET _GL_VOID GLenum GLint *params _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_BOOL GLfloat param _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID GLenum GLfloat param _GL_VOID_RET _GL_VOID GLenum GLint param _GL_VOID_RET _GL_VOID GLushort pattern _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLint order
btFixedConstraint btRigidBody & rbB
btFixedConstraint btRigidBody const btTransform & frameInA
btFixedConstraint btRigidBody const btTransform const btTransform & frameInB
void getAngularLowerLimit(btVector3 &angularLower)
btScalar getAngle(int axis_index) const
Get the relative Euler angle.
void getAngularUpperLimitReversed(btVector3 &angularUpper)
const btTransform & getCalculatedTransformA() const
BT_DECLARE_ALIGNED_ALLOCATOR()
void setAngularUpperLimit(const btVector3 &angularUpper)
virtual void getInfo2(btConstraintInfo2 *info)
const btTransform & getFrameOffsetA() const
static bool matrixToEulerYZX(const btMatrix3x3 &mat, btVector3 &xyz)
void calculateTransforms(const btTransform &transA, const btTransform &transB)
btTransform m_calculatedTransformB
void setStiffness(int index, btScalar stiffness, bool limitIfNeeded=true)
btGeneric6DofSpring2Constraint & operator=(const btGeneric6DofSpring2Constraint &)
virtual void setParam(int num, btScalar value, int axis=-1)
void setDamping(int index, btScalar damping, bool limitIfNeeded=true)
static bool matrixToEulerXYZ(const btMatrix3x3 &mat, btVector3 &xyz)
MatrixToEulerXYZ from http://www.geometrictools.com/LibFoundation/Mathematics/Wm4Matrix3....
void setLinearLowerLimit(const btVector3 &linearLower)
btVector3 m_calculatedAxis[3]
virtual int calculateSerializeBufferSize() const
btVector3 m_calculatedLinearDiff
btJacobianEntry m_jacAng[3]
static bool matrixToEulerYXZ(const btMatrix3x3 &mat, btVector3 &xyz)
void setLimit(int axis, btScalar lo, btScalar hi)
int get_limit_motor_info2(btRotationalLimitMotor2 *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 setLimitReversed(int axis, btScalar lo, btScalar hi)
btJacobianEntry m_jacLinear[3]
void getAngularLowerLimitReversed(btVector3 &angularLower)
void calculateLinearInfo()
const btTransform & getFrameOffsetB() const
btTranslationalLimitMotor2 * getTranslationalLimitMotor()
void calculateAngleInfo()
void getLinearUpperLimit(btVector3 &linearUpper)
void enableSpring(int index, bool onOff)
virtual btScalar getParam(int num, int axis=-1) const
const btTransform & getCalculatedTransformB() const
void setBounce(int index, btScalar bounce)
btRotationalLimitMotor2 m_angularLimits[3]
static bool matrixToEulerZXY(const btMatrix3x3 &mat, btVector3 &xyz)
void testAngularLimitMotor(int axis_index)
void enableMotor(int index, bool onOff)
void setLinearUpperLimit(const btVector3 &linearUpper)
void setFrames(const btTransform &frameA, const btTransform &frameB)
void setAxis(const btVector3 &axis1, const btVector3 &axis2)
void setAngularLowerLimitReversed(const btVector3 &angularLower)
#define btGeneric6DofSpring2ConstraintData2
void calculateJacobi(btRotationalLimitMotor2 *limot, const btTransform &transA, const btTransform &transB, btConstraintInfo2 *info, int srow, btVector3 &ax1, int rotational, int rotAllowed)
void getAngularUpperLimit(btVector3 &angularUpper)
btRotationalLimitMotor2 * getRotationalLimitMotor(int index)
virtual void buildJacobian()
obsolete methods
static btScalar btGetMatrixElem(const btMatrix3x3 &mat, int index)
RotateOrder getRotationOrder()
int setLinearLimits(btConstraintInfo2 *info, int row, const btTransform &transA, const btTransform &transB, const btVector3 &linVelA, const btVector3 &linVelB, const btVector3 &angVelA, const btVector3 &angVelB)
btVector3 m_calculatedAxisAngleDiff
btVector3 getAxis(int axis_index) const
Get the rotation axis in global coordinates.
virtual void getInfo1(btConstraintInfo1 *info)
void setServoTarget(int index, btScalar target)
void setMaxMotorForce(int index, btScalar force)
void setAngularUpperLimitReversed(const btVector3 &angularUpper)
btScalar getRelativePivotPosition(int axis_index) const
Get the relative position of the constraint pivot.
static bool matrixToEulerZYX(const btMatrix3x3 &mat, btVector3 &xyz)
void setEquilibriumPoint()
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)
static bool matrixToEulerXZY(const btMatrix3x3 &mat, btVector3 &xyz)
void setTargetVelocity(int index, btScalar velocity)
void getLinearLowerLimit(btVector3 &linearLower)
void setServo(int index, bool onOff)
btGeneric6DofSpring2Constraint(btRigidBody &rbA, btRigidBody &rbB, const btTransform &frameInA, const btTransform &frameInB, RotateOrder rotOrder=RO_XYZ)
void setRotationOrder(RotateOrder order)
@ BT_6DOF_FLAGS_ERP_MOTO2
@ BT_6DOF_FLAGS_CFM_MOTO2
@ BT_6DOF_FLAGS_ERP_STOP2
@ BT_6DOF_FLAGS_CFM_STOP2
@ BT_6DOF_FLAGS_USE_INFINITE_ERROR
btTransform m_calculatedTransformA
#define btGeneric6DofSpring2ConstraintDataName
bool isLimited(int limitIndex)
void setAngularLowerLimit(const btVector3 &angularLower)
RotateOrder m_rotateOrder
virtual const char * serialize(void *dataBuffer, btSerializer *serializer) const
btTranslationalLimitMotor2 m_linearLimits
btMatrix3x3
The btMatrix3x3 class implements a 3x3 rotation matrix, to perform linear algebra in combination with...
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...
bool m_springDampingLimited
btScalar m_targetVelocity
void testLimitValue(btScalar test_value)
btScalar m_currentLimitErrorHi
btScalar m_currentPosition
bool m_springStiffnessLimited
btRotationalLimitMotor2()
btRotationalLimitMotor2(const btRotationalLimitMotor2 &limot)
btScalar m_currentLimitError
btScalar m_springStiffness
btScalar m_equilibriumPoint
btVector3 m_targetVelocity
bool isLimited(int limitIndex)
btVector3 m_equilibriumPoint
btVector3 m_currentLinearDiff
bool m_springDampingLimited[3]
btTranslationalLimitMotor2()
btTranslationalLimitMotor2(const btTranslationalLimitMotor2 &other)
btVector3 m_currentLimitError
btVector3 m_springStiffness
void testLimitValue(int limitIndex, btScalar test_value)
btVector3 m_currentLimitErrorHi
btVector3 m_maxMotorForce
bool m_springStiffnessLimited[3]
btVector3 m_springDamping
btTransformFloatData m_rbAFrame
btTransformFloatData m_rbBFrame
btVector3FloatData m_linearSpringDamping
btVector3FloatData m_angularBounce
btVector3FloatData m_angularMaxMotorForce
btVector3FloatData m_linearEquilibriumPoint
char m_linearSpringDampingLimited[4]
btVector3FloatData m_angularSpringDamping
char m_angularServoMotor[4]
btVector3FloatData m_linearStopERP
char m_linearEnableSpring[4]
btVector3FloatData m_linearBounce
btVector3FloatData m_angularSpringStiffness
char m_angularEnableMotor[4]
char m_linearEnableMotor[4]
btVector3FloatData m_linearSpringStiffness
btVector3FloatData m_linearServoTarget
btTypedConstraintData m_typeConstraintData
char m_linearSpringStiffnessLimited[4]
btVector3FloatData m_angularStopCFM
btVector3FloatData m_linearStopCFM
btVector3FloatData m_angularUpperLimit
char m_angularSpringDampingLimited[4]
char m_angularEnableSpring[4]
btVector3FloatData m_angularMotorCFM
char m_angularSpringStiffnessLimited[4]
char m_linearServoMotor[4]
btVector3FloatData m_linearUpperLimit
btVector3FloatData m_linearMotorCFM
btVector3FloatData m_angularLowerLimit
btVector3FloatData m_linearMaxMotorForce
btVector3FloatData m_angularMotorERP
btVector3FloatData m_angularTargetVelocity
btVector3FloatData m_angularEquilibriumPoint
btVector3FloatData m_linearLowerLimit
btVector3FloatData m_linearMotorERP
btVector3FloatData m_angularServoTarget
btVector3FloatData m_angularStopERP
btVector3FloatData m_linearTargetVelocity
btVector3DoubleData m_angularSpringStiffness
btVector3DoubleData m_linearSpringDamping
btVector3DoubleData m_angularTargetVelocity
btVector3DoubleData m_linearTargetVelocity
btVector3DoubleData m_angularMotorERP
btVector3DoubleData m_linearBounce
char m_angularSpringStiffnessLimited[4]
btVector3DoubleData m_angularStopCFM
btVector3DoubleData m_angularLowerLimit
btVector3DoubleData m_angularBounce
btVector3DoubleData m_linearSpringStiffness
char m_linearEnableMotor[4]
btVector3DoubleData m_angularMaxMotorForce
btVector3DoubleData m_angularServoTarget
char m_angularServoMotor[4]
btVector3DoubleData m_linearServoTarget
char m_angularEnableSpring[4]
btVector3DoubleData m_linearMotorERP
btVector3DoubleData m_linearMotorCFM
char m_angularSpringDampingLimited[4]
btTransformDoubleData m_rbBFrame
char m_angularEnableMotor[4]
btTypedConstraintDoubleData m_typeConstraintData
btVector3DoubleData m_linearUpperLimit
btVector3DoubleData m_linearLowerLimit
char m_linearSpringStiffnessLimited[4]
char m_linearSpringDampingLimited[4]
btVector3DoubleData m_linearEquilibriumPoint
btVector3DoubleData m_angularMotorCFM
btVector3DoubleData m_linearMaxMotorForce
btTransformDoubleData m_rbAFrame
btVector3DoubleData m_angularEquilibriumPoint
char m_linearServoMotor[4]
btVector3DoubleData m_angularSpringDamping
btVector3DoubleData m_angularUpperLimit
char m_linearEnableSpring[4]
btVector3DoubleData m_angularStopERP
btVector3DoubleData m_linearStopCFM
btVector3DoubleData m_linearStopERP
this structure is not used, except for loading pre-2.82 .bullet files