28 #define USE_OFFSET_FOR_CONSTANT_FRAME true 85 m_useSolveConstraintObsolete(false),
88 m_useLinearReferenceFrameA(useLinearReferenceFrameA)
97 m_useSolveConstraintObsolete(false),
99 m_useLinearReferenceFrameA(useLinearReferenceFrameA)
186 for(i = 0; i < 3; i++)
302 ax1 = ax1A * factA + ax1B * factB;
378 btVector3 tmpA(0,0,0), tmpB(0,0,0), relA(0,0,0), relB(0,0,0), c(0,0,0);
394 btVector3 totalDist = projA + ax1 * sliderOffs - projB;
396 relA = orthoA + totalDist * factA;
397 relB = orthoB - totalDist * factB;
399 p = orthoB * factA + orthoA * factB;
412 tmpA = relA.
cross(p);
413 tmpB = relB.
cross(p);
416 tmpA = relA.cross(q);
417 tmpB = relB.cross(q);
451 k = info->
fps * currERP;
455 rhs = k * q.
dot(ofs);
470 limit = (limit_err >
btScalar(0.0)) ? 2 : 1;
474 if (limit || powered)
496 tmpA = relA.
cross(ax1);
497 tmpB = relB.
cross(ax1);
520 if(limit && (lostop == histop))
542 k = info->
fps * currERP;
568 vel -= linVelB.
dot(ax1);
588 if(newc < info->m_constraintError[srow])
604 limit = (limit_err >
btScalar(0.0)) ? 1 : 2;
622 if(limit && (lostop == histop))
640 k = info->
fps * currERP;
686 if(newc < info->m_constraintError[srow])
btScalar * m_constraintError
void calculateTransforms(const btTransform &transA, const btTransform &transB)
#define SLIDER_CONSTRAINT_DEF_RESTITUTION
btScalar m_dampingOrthoAng
btScalar getMaxAngMotorForce()
btScalar * m_J2angularAxis
const btVector3 & getAngularVelocity() const
virtual btScalar getParam(int num, int axis=-1) const
return the local value of parameter
btScalar m_dampingOrthoLin
const btTransform & getCalculatedTransformA() const
const btTransform & getCalculatedTransformB() const
#define USE_OFFSET_FOR_CONSTANT_FRAME
void getInfo2NonVirtual(btConstraintInfo2 *info, const btTransform &transA, const btTransform &transB, const btVector3 &linVelA, const btVector3 &linVelB, btScalar rbAinvMass, btScalar rbBinvMass)
virtual void getInfo2(btConstraintInfo2 *info)
internal method used by the constraint solver, don't use them directly
const btTransform & getCenterOfMassTransform() const
btScalar m_restitutionOrthoAng
btScalar length2() const
Return the length of the vector squared.
btScalar m_accumulatedAngMotorImpulse
void btPlaneSpace1(const T &n, T &p, T &q)
btScalar btSqrt(btScalar y)
btScalar m_accumulatedLinMotorImpulse
btScalar getLowerLinLimit()
btTransform m_calculatedTransformB
bool getPoweredLinMotor()
btScalar * m_J1angularAxis
btScalar m_targetLinMotorVelocity
bool getPoweredAngMotor()
btVector3 & normalize()
Normalize this vector x^2 + y^2 + z^2 = 1.
btSliderConstraint(btRigidBody &rbA, btRigidBody &rbB, const btTransform &frameInA, const btTransform &frameInB, bool useLinearReferenceFrameA)
btScalar getMaxLinMotorForce()
btVector3 getColumn(int i) const
Get a column of the matrix as a vector.
btScalar m_restitutionLimLin
btScalar getUpperAngLimit()
btScalar * m_J1linearAxis
btScalar m_softnessLimLin
const btVector3 & getLinearVelocity() const
btScalar m_restitutionLimAng
btScalar getInvMass() const
btVector3 cross(const btVector3 &v) const
Return the cross product between this and another vector.
btScalar dot(const btVector3 &v) const
Return the dot product.
btScalar m_restitutionDirAng
btScalar btAtan2(btScalar x, btScalar y)
#define SLIDER_CONSTRAINT_DEF_CFM
btScalar getDampingLimAng()
btScalar m_softnessDirLin
The btRigidBody is the main class for rigid body objects.
btVector3 m_realPivotBInW
btScalar m_softnessOrthoLin
btScalar m_targetAngMotorVelocity
virtual void getInfo1(btConstraintInfo1 *info)
internal method used by the constraint solver, don't use them directly
bool m_useOffsetForConstraintFrame
btScalar getUpperLinLimit()
btScalar getTargetLinMotorVelocity()
#define SLIDER_CONSTRAINT_DEF_SOFTNESS
void getInfo1NonVirtual(btConstraintInfo1 *info)
btScalar btAdjustAngleToLimits(btScalar angleInRadians, btScalar angleLowerLimitInRadians, btScalar angleUpperLimitInRadians)
btVector3 can be used to represent 3D points and vectors.
bool m_useLinearReferenceFrameA
btScalar getTargetAngMotorVelocity()
btScalar * m_J2linearAxis
btTransform m_calculatedTransformA
TypedConstraint is the baseclass for Bullet constraints and vehicles.
btScalar getSoftnessLimLin()
btScalar getMotorFactor(btScalar pos, btScalar lowLim, btScalar uppLim, btScalar vel, btScalar timeFact)
internal method used by the constraint solver, don't use them directly
btVector3 m_realPivotAInW
btScalar m_softnessDirAng
bool m_useSolveConstraintObsolete
for backwards compatibility during the transition to 'getInfo/getInfo2'
btScalar m_maxLinMotorForce
btScalar getLowerAngLimit()
btScalar m_restitutionDirLin
btScalar m_maxAngMotorForce
#define btAssertConstrParams(_par)
btScalar m_softnessLimAng
btScalar getDampingLimLin()
btScalar m_restitutionOrthoLin
btScalar m_softnessOrthoAng
btScalar getSoftnessLimAng()
#define SLIDER_CONSTRAINT_DEF_DAMPING
float btScalar
The btScalar type abstracts floating point numbers, to easily switch between double and single floati...
virtual void setParam(int num, btScalar value, int axis=-1)
override the default global value of a parameter (such as ERP or CFM), optionally provide the axis (0...
btScalar btFabs(btScalar x)