131 btScalar rel_vel =
fillMultiBodyConstraint(constraintRow,data,
jacobianA(row),
jacobianB(row),dummy,dummy,dummy,dummy,posError,infoGlobal,0,
m_maxAppliedImpulse);
173 erp = infoGlobal.
m_erp;
178 velocityError = -penetration / infoGlobal.
m_timeStep;
181 positionalError = -penetration * erp/infoGlobal.
m_timeStep;
189 constraintRow.
m_rhs = penetrationImpulse+velocityImpulse;
195 constraintRow.
m_rhs = velocityImpulse;
btAlignedObjectArray< btMultiBodySolverConstraint > btMultiBodyConstraintArray
btScalar getPosition(int row) const
btScalar * jacobianA(int row)
void setPosition(int row, btScalar pos)
btScalar m_maxAppliedImpulse
btScalar * jacobianB(int row)
void allocateJacobiansMultiDof()
btMultiBodyConstraint(btMultiBody *bodyA, btMultiBody *bodyB, int linkA, int linkB, int numRows, bool isUnilateral)
btScalar fillMultiBodyConstraint(btMultiBodySolverConstraint &solverConstraint, btMultiBodyJacobianData &data, btScalar *jacOrgA, btScalar *jacOrgB, const btVector3 &constraintNormalAng, const btVector3 &constraintNormalLin, const btVector3 &posAworld, const btVector3 &posBworld, btScalar posError, const btContactSolverInfo &infoGlobal, btScalar lowerLimit, btScalar upperLimit, bool angConstraint=false, btScalar relaxation=1.f, bool isFriction=false, btScalar desiredVelocity=0, btScalar cfmSlip=0)
virtual int getIslandIdB() const
virtual void finalizeMultiDof()
virtual int getIslandIdA() const
virtual ~btMultiBodyJointLimitConstraint()
virtual void createConstraintRows(btMultiBodyConstraintArray &constraintRows, btMultiBodyJacobianData &data, const btContactSolverInfo &infoGlobal)
btMultiBodyJointLimitConstraint(btMultiBody *body, int link, btScalar lower, btScalar upper)
This file was written by Erwin Coumans.
1D constraint along a normal axis between bodyA and bodyB. It can be combined to solve contact and fr...
btMultiBodyConstraint * m_orgConstraint
btVector3 m_relpos1CrossNormal
btVector3 m_contactNormal2
btVector3 m_contactNormal1
btMultiBody * m_multiBodyB
btVector3 m_relpos2CrossNormal
btScalar m_rhsPenetration
btMultiBody * m_multiBodyA