32 #ifndef BT_CONETWISTCONSTRAINT_H
33 #define BT_CONETWISTCONSTRAINT_H
39 #ifdef BT_USE_DOUBLE_PRECISION
40 #define btConeTwistConstraintData2 btConeTwistConstraintDoubleData
41 #define btConeTwistConstraintDataName "btConeTwistConstraintDoubleData"
43 #define btConeTwistConstraintData2 btConeTwistConstraintData
44 #define btConeTwistConstraintDataName "btConeTwistConstraintData"
60 #ifdef IN_PARALLELL_SOLVER
216 btAssert(0 &&
"Invalid limitIndex specified for btConeTwistConstraint");
375 #ifdef BT_BACKWARDS_COMPATIBLE_SERIALIZATION
BT_DECLARE_ALIGNED_ALLOCATOR()
virtual void getInfo2(btConstraintInfo2 *info)
virtual void buildJacobian()
internal method used by the constraint solver, don't use them directly
const btTransform & getFrameOffsetB() const
const btTransform & getAFrame() const
virtual void setParam(int num, btScalar value, int axis=-1)
void setDamping(btScalar damping)
virtual int calculateSerializeBufferSize() const
virtual void setFrames(const btTransform &frameA, const btTransform &frameB)
btScalar m_twistLimitSign
btScalar m_accSwingLimitImpulse
btScalar m_accTwistLimitImpulse
void updateRHS(btScalar timeStep)
btScalar m_swingLimitRatio
bool m_bNormalizedMotorStrength
btScalar getBiasFactor() const
@ BT_CONETWIST_FLAGS_LIN_CFM
@ BT_CONETWIST_FLAGS_LIN_ERP
@ BT_CONETWIST_FLAGS_ANG_CFM
bool m_useSolveConstraintObsolete
bool isMaxMotorImpulseNormalized() const
btScalar m_maxMotorImpulse
virtual void solveConstraintObsolete(btSolverBody &bodyA, btSolverBody &bodyB, btScalar timeStep)
internal method used by the constraint solver, don't use them directly
virtual void getInfo1(btConstraintInfo1 *info)
btScalar getTwistAngle() const
btScalar getTwistLimitSign()
btConeTwistConstraint(btRigidBody &rbA, btRigidBody &rbB, const btTransform &rbAFrame, const btTransform &rbBFrame)
void getInfo2NonVirtual(btConstraintInfo2 *info, const btTransform &transA, const btTransform &transB, const btMatrix3x3 &invInertiaWorldA, const btMatrix3x3 &invInertiaWorldB)
virtual btScalar getParam(int num, int axis=-1) const
return the local value of parameter
void computeTwistLimitInfo(const btQuaternion &qTwist, btScalar &twistAngle, btVector3 &vTwistAxis)
const btRigidBody & getRigidBodyA() const
#define btConeTwistConstraintData2
btScalar m_twistCorrection
btScalar getLimit(int limitIndex) const
btScalar getSwingSpan2() const
btScalar m_twistLimitRatio
void setMotorTargetInConstraintSpace(const btQuaternion &q)
btScalar getSwingSpan1() const
btVector3 m_accMotorImpulse
btVector3 GetPointForAngle(btScalar fAngleInRadians, btScalar fLength) const
void computeConeLimitInfo(const btQuaternion &qCone, btScalar &swingAngle, btVector3 &vSwingAxis, btScalar &swingLimit)
btScalar m_swingCorrection
void setMaxMotorImpulseNormalized(btScalar maxMotorImpulse)
btScalar getRelaxationFactor() const
const btQuaternion & getMotorTarget() const
void setAngularOnly(bool angularOnly)
btScalar getMaxMotorImpulse() const
#define btConeTwistConstraintDataName
bool getAngularOnly() const
btScalar getLimitSoftness() const
const btRigidBody & getRigidBodyB() const
void setFixThresh(btScalar fixThresh)
const btTransform & getBFrame() const
void calcAngleInfo2(const btTransform &transA, const btTransform &transB, const btMatrix3x3 &invInertiaWorldA, const btMatrix3x3 &invInertiaWorldB)
bool isMotorEnabled() const
btScalar getTwistSpan() const
void setLimit(int limitIndex, btScalar limitValue)
const btTransform & getFrameOffsetA() const
void adjustSwingAxisToUseEllipseNormal(btVector3 &vSwingAxis) const
void setMaxMotorImpulse(btScalar maxMotorImpulse)
btScalar m_relaxationFactor
btScalar getDamping() const
virtual const char * serialize(void *dataBuffer, btSerializer *serializer) const
fills the dataBuffer and returns the struct name (and 0 on failure)
void getInfo1NonVirtual(btConstraintInfo1 *info)
void setMotorTarget(const btQuaternion &q)
btFixedConstraint btRigidBody & rbB
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)
#define SIMD_FORCE_INLINE
btSolverBody
The btSolverBody is an internal datastructure for the constraint solver. Only necessary data is packe...
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...
The btQuaternion implements quaternion to perform linear algebra rotations in combination with btMatr...
static const pxr::TfToken b("b", pxr::TfToken::Immortal)
this structure is not used, except for loading pre-2.82 .bullet files
btTypedConstraintData m_typeConstraintData
btTransformFloatData m_rbBFrame
btTransformFloatData m_rbAFrame
btTypedConstraintDoubleData m_typeConstraintData
btTransformDoubleData m_rbBFrame
double m_relaxationFactor
btTransformDoubleData m_rbAFrame
this structure is not used, except for loading pre-2.82 .bullet files