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
126 btScalar& twistAngle, btVector3& vTwistAxis);
216 btAssert(0 &&
"Invalid limitIndex specified for btConeTwistConstraint");
375#ifdef BT_BACKWARDS_COMPATIBLE_SERIALIZATION
407 btTypedConstraint::serialize(&cone->m_typeConstraintData, serializer);
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
const btQuaternion & getMotorTarget() const
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
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
virtual const char * serialize(void *dataBuffer, btSerializer *serializer) const
fills the dataBuffer and returns the struct name (and 0 on failure)
void setMaxMotorImpulse(btScalar maxMotorImpulse)
btScalar m_relaxationFactor
btScalar getDamping() const
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...
The btQuaternion implements quaternion to perform linear algebra rotations in combination with btMatr...
local_group_size(16, 16) .push_constant(Type b
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