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");
262 void calcAngleInfo();
324 void setMotorTargetInConstraintSpace(
const btQuaternion& q);
330 virtual void setParam(
int num,
btScalar value,
int axis = -1);
345 virtual btScalar getParam(
int num,
int axis = -1)
const;
375#ifdef BT_BACKWARDS_COMPATIBLE_SERIALIZATION
@ BT_CONETWIST_FLAGS_LIN_CFM
@ BT_CONETWIST_FLAGS_LIN_ERP
@ BT_CONETWIST_FLAGS_ANG_CFM
#define btConeTwistConstraintData2
#define btConeTwistConstraintDataName
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
const btRigidBody & getRigidBodyB() const
bool isMaxMotorImpulseNormalized() const
const btQuaternion & getMotorTarget() const
btScalar m_accSwingLimitImpulse
bool getAngularOnly() const
btScalar m_accTwistLimitImpulse
const btTransform & getBFrame() const
btScalar getLimit(int limitIndex) const
btScalar getDamping() const
btScalar getSwingSpan1() const
BT_DECLARE_ALIGNED_ALLOCATOR()
btScalar getTwistLimitSign()
virtual void buildJacobian()
internal method used by the constraint solver, don't use them directly
virtual void getInfo1(btConstraintInfo1 *info)
internal method used by the constraint solver, don't use them directly
bool m_useSolveConstraintObsolete
btScalar getBiasFactor() const
void setLimit(btScalar _swingSpan1, btScalar _swingSpan2, btScalar _twistSpan, btScalar _softness=1.f, btScalar _biasFactor=0.3f, btScalar _relaxationFactor=1.0f)
btVector3 m_accMotorImpulse
void setAngularOnly(bool angularOnly)
btScalar m_twistCorrection
btScalar m_swingLimitRatio
btScalar m_twistLimitSign
virtual void solveConstraintObsolete(btSolverBody &bodyA, btSolverBody &bodyB, btScalar timeStep)
internal method used by the constraint solver, don't use them directly
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)
void computeTwistLimitInfo(const btQuaternion &qTwist, btScalar &twistAngle, btVector3 &vTwistAxis)
virtual int calculateSerializeBufferSize() const
btScalar getTwistAngle() const
void setLimit(int limitIndex, btScalar limitValue)
void setMaxMotorImpulse(btScalar maxMotorImpulse)
btScalar m_swingCorrection
const btRigidBody & getRigidBodyA() const
btScalar m_twistLimitRatio
bool m_bNormalizedMotorStrength
void computeConeLimitInfo(const btQuaternion &qCone, btScalar &swingAngle, btVector3 &vSwingAxis, btScalar &swingLimit)
void getInfo1NonVirtual(btConstraintInfo1 *info)
void setFixThresh(btScalar fixThresh)
btScalar getLimitSoftness() const
const btTransform & getFrameOffsetB() const
void setMaxMotorImpulseNormalized(btScalar maxMotorImpulse)
btScalar getSwingSpan2() const
btScalar getTwistSpan() const
bool isMotorEnabled() const
virtual void getInfo2(btConstraintInfo2 *info)
internal method used by the constraint solver, don't use them directly
const btTransform & getAFrame() const
void adjustSwingAxisToUseEllipseNormal(btVector3 &vSwingAxis) const
void setDamping(btScalar damping)
btScalar getRelaxationFactor() const
const btTransform & getFrameOffsetA() const
void updateRHS(btScalar timeStep)
btScalar m_maxMotorImpulse
virtual const char * serialize(void *dataBuffer, btSerializer *serializer) const
fills the dataBuffer and returns the struct name (and 0 on failure)
btScalar m_relaxationFactor
btScalar getMaxMotorImpulse() const
Jacobian entry is an abstraction that allows to describe constraints it can be used in combination wi...
The btMatrix3x3 class implements a 3x3 rotation matrix, to perform linear algebra in combination with...
The btQuaternion implements quaternion to perform linear algebra rotations in combination with btMatr...
The btRigidBody is the main class for rigid body objects.
virtual const char * serialize(void *dataBuffer, class btSerializer *serializer) const
fills the dataBuffer and returns the struct name (and 0 on failure)
virtual int calculateSerializeBufferSize() const
virtual const char * serialize(void *dataBuffer, btSerializer *serializer) const
fills the dataBuffer and returns the struct name (and 0 on failure)
btTypedConstraint(btTypedConstraintType type, btRigidBody &rbA)
btVector3 can be used to represent 3D points and vectors.
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
The btSolverBody is an internal datastructure for the constraint solver. Only necessary data is packe...
this structure is not used, except for loading pre-2.82 .bullet files