20btPoint2PointConstraint::btPoint2PointConstraint(
btRigidBody& rbA,
btRigidBody&
rbB,
const btVector3& pivotInA,
const btVector3& pivotInB)
25btPoint2PointConstraint::btPoint2PointConstraint(
btRigidBody& rbA,
const btVector3& pivotInA)
30void btPoint2PointConstraint::buildJacobian()
36 btVector3 normal(0, 0, 0);
38 for (
int i = 0; i < 3; i++)
93 btVector3 a1 = body0_trans.getBasis() *
getPivotInA();
98 btVector3 a1neg = -a1;
99 a1neg.getSkewSymmetricMatrix(angular0, angular1, angular2);
106 btVector3 a2 = body1_trans.getBasis() *
getPivotInB();
113 a2.getSkewSymmetricMatrix(angular0, angular1, angular2);
120 for (j = 0; j < 3; j++)
122 info->
m_constraintError[j * info->
rowskip] = k * (a2[j] + body1_trans.getOrigin()[j] - a1[j] - body0_trans.getOrigin()[j]);
127 for (j = 0; j < 3; j++)
134 for (j = 0; j < 3; j++)
145void btPoint2PointConstraint::updateRHS(
btScalar timeStep)
152void btPoint2PointConstraint::setParam(
int num,
btScalar value,
int axis)
179btScalar btPoint2PointConstraint::getParam(
int num,
int axis)
const
bool m_useSolveConstraintObsolete
void getInfo2NonVirtual(btConstraintInfo2 *info, const btTransform &transA, const btTransform &transB, const btMatrix3x3 &invInertiaWorldA, const btMatrix3x3 &invInertiaWorldB)
void getInfo1NonVirtual(btConstraintInfo1 *info)
btFixedConstraint btRigidBody & rbB
const btVector3 & getPivotInB() const
const btVector3 & getPivotInA() const
btConstraintSetting m_setting
float btScalar
The btScalar type abstracts floating point numbers, to easily switch between double and single floati...
btSimdScalar m_appliedImpulse
#define btAssertConstrParams(_par)
@ POINT2POINT_CONSTRAINT_TYPE
btScalar getInvMass() const
const btVector3 & getInvInertiaDiagLocal() const
const btTransform & getCenterOfMassTransform() const
const btVector3 & getCenterOfMassPosition() const
btScalar * m_J2linearAxis
btScalar * m_J2angularAxis
btScalar * m_J1angularAxis
btScalar * m_constraintError
btScalar * m_J1linearAxis