16 #ifndef BT_TRANSFORM_UTIL_H    17 #define BT_TRANSFORM_UTIL_H    20 #define ANGULAR_MOTION_THRESHOLD btScalar(0.5)*SIMD_HALF_PI    28       supportDir.
y() < 
btScalar(0.0) ? -halfExtents.
y() : halfExtents.
y(),
    29       supportDir.
z() < 
btScalar(0.0) ? -halfExtents.
z() : halfExtents.
z()); 
    47         #ifdef QUATERNION_DERIVATIVE    49                 predictedOrn += (angvel * predictedOrn) * (timeStep * 
btScalar(0.5));
    66                         axis   = angvel*( 
btScalar(0.5)*timeStep-(timeStep*timeStep*timeStep)*(
btScalar(0.020833333333))*fAngle*fAngle );
    71                         axis   = angvel*( 
btSin(
btScalar(0.5)*fAngle*timeStep)/fAngle );
    84                 linVel = (pos1 - pos0) / timeStep;
    90                         angVel = axis * angle / timeStep;
   118                 angVel = axis * angle / timeStep;
   162                 :m_boundingRadiusA(boundingRadiusA),
   163                 m_boundingRadiusB(boundingRadiusB),
   164                 m_separatingDistance(0.f)
   170                 return m_separatingDistance;
   180                 if (m_separatingDistance>0.f)
   184                         btVector3 linVelA,angVelA,linVelB,angVelB;
   187                         btScalar maxAngularProjectedVelocity = angVelA.
length() * m_boundingRadiusA + angVelB.
length() * m_boundingRadiusB;
   189                         btScalar relLinVelocLength = relLinVel.
dot(m_separatingNormal);
   190                         if (relLinVelocLength<0.f)
   192                                 relLinVelocLength = 0.f;
   195                         btScalar        projectedMotion = maxAngularProjectedVelocity +relLinVelocLength;
   196                         m_separatingDistance -= projectedMotion;
   207                 m_separatingDistance = separatingDistance;
   209                 if (m_separatingDistance>0.f)
   211                         m_separatingNormal = separatingVector;
   227 #endif //BT_TRANSFORM_UTIL_H 
const btScalar & x() const
Return the x value. 
btVector3 m_separatingNormal
void setValue(const btScalar &_x, const btScalar &_y, const btScalar &_z)
btScalar btSin(btScalar x)
btScalar length2() const
Return the length of the vector squared. 
btConvexSeparatingDistanceUtil(btScalar boundingRadiusA, btScalar boundingRadiusB)
btScalar btSqrt(btScalar y)
#define SIMD_FORCE_INLINE
btScalar m_boundingRadiusB
btQuaternion inverse() const
Return the inverse of this quaternion. 
void updateSeparatingDistance(const btTransform &transA, const btTransform &transB)
const btScalar & x() const
Return the x value. 
btQuaternion & normalize()
Normalize the quaternion Such that x^2 + y^2 + z^2 +w^2 = 1. 
btScalar m_boundingRadiusA
btScalar dot(const btVector3 &v) const
Return the dot product. 
The btConvexSeparatingDistanceUtil can help speed up convex collision detection by conservatively upd...
const btScalar & y() const
Return the y value. 
btScalar getConservativeSeparatingDistance()
const btScalar & z() const
Return the z value. 
btScalar m_separatingDistance
const btScalar & z() const
Return the z value. 
btVector3 can be used to represent 3D points and vectors. 
btScalar getAngle() const
Return the angle [0, 2Pi] of rotation represented by this quaternion. 
btQuaternion nearest(const btQuaternion &qd) const
The btMatrix3x3 class implements a 3x3 rotation matrix, to perform linear algebra in combination with...
const btScalar & y() const
Return the y value. 
The btQuaternion implements quaternion to perform linear algebra rotations in combination with btMatr...
btMatrix3x3 inverse() const
Return the inverse of the matrix. 
void initSeparatingDistance(const btVector3 &separatingVector, btScalar separatingDistance, const btTransform &transA, const btTransform &transB)
void getRotation(btQuaternion &q) const
Get the matrix represented as a quaternion. 
float btScalar
The btScalar type abstracts floating point numbers, to easily switch between double and single floati...
btScalar btCos(btScalar x)
btScalar length() const
Return the length of the vector.