23 #ifndef BTMBP2PCONSTRAINT_BLOCK_ANGULAR_MOTION_TEST 24 #define BTMBP2PCONSTRAINT_DIM 3 26 #define BTMBP2PCONSTRAINT_DIM 6 101 for (
int i=0;i<numDim;i++)
117 #ifndef BTMBP2PCONSTRAINT_BLOCK_ANGULAR_MOTION_TEST 118 contactNormalOnB[i] = -1;
120 contactNormalOnB[i%3] = -1;
148 btScalar posError = i < 3 ? (pivotAworld-pivotBworld).
dot(contactNormalOnB) : 0;
150 #ifndef BTMBP2PCONSTRAINT_BLOCK_ANGULAR_MOTION_TEST 154 contactNormalOnB, pivotAworld, pivotBworld,
167 const btVector3 &normalAng = i >= 3 ? contactNormalOnB : dummy;
168 const btVector3 &normalLin = i < 3 ? contactNormalOnB : dummy;
void filConstraintJacobianMultiDof(int link, const btVector3 &contact_point, const btVector3 &normal_ang, const btVector3 &normal_lin, btScalar *jac, btAlignedObjectArray< btScalar > &scratch_r, btAlignedObjectArray< btVector3 > &scratch_v, btAlignedObjectArray< btMatrix3x3 > &scratch_m) const
btScalar fillMultiBodyConstraint(btMultiBodySolverConstraint &solverConstraint, btMultiBodyJacobianData &data, btScalar *jacOrgA, btScalar *jacOrgB, const btVector3 &contactNormalOnB, const btVector3 &posAworld, const btVector3 &posBworld, btScalar posError, const btContactSolverInfo &infoGlobal, btScalar lowerLimit, btScalar upperLimit, btScalar relaxation=1.f, bool isFriction=false, btScalar desiredVelocity=0, btScalar cfmSlip=0)
btVector3 localPosToWorld(int i, const btVector3 &vec) const
virtual ~btMultiBodyPoint2Point()
virtual void debugDraw(class btIDebugDraw *drawer)
btVector3 m_relpos1CrossNormal
1D constraint along a normal axis between bodyA and bodyB. It can be combined to solve contact and fr...
btVector3 m_contactNormal2
const btMultiBodyLinkCollider * getBaseCollider() const
btAlignedObjectArray< btScalar > scratch_r
void setValue(const btScalar &_x, const btScalar &_y, const btScalar &_z)
btScalar m_maxAppliedImpulse
btVector3 m_angularComponentA
btVector3 m_angularComponentB
const btTransform & getCenterOfMassTransform() const
class btMultiBodyLinkCollider * m_collider
btScalar * jacobianA(int row)
btMultiBodyPoint2Point(btMultiBody *body, int link, btRigidBody *bodyB, const btVector3 &pivotInA, const btVector3 &pivotInB)
btAlignedObjectArray< btMatrix3x3 > scratch_m
btRigidBody * m_rigidBodyB
btRigidBody * m_rigidBodyA
virtual void createConstraintRows(btMultiBodyConstraintArray &constraintRows, btMultiBodyJacobianData &data, const btContactSolverInfo &infoGlobal)
The btIDebugDraw interface class allows hooking up a debug renderer to visually debug simulations...
The btRigidBody is the main class for rigid body objects.
const btMultibodyLink & getLink(int index) const
btVector3 can be used to represent 3D points and vectors.
btAlignedObjectArray< btVector3 > scratch_v
virtual int getIslandIdA() const
#define BTMBP2PCONSTRAINT_DIM
This file was written by Erwin Coumans.
virtual void drawTransform(const btTransform &transform, btScalar orthoLen)
btVector3 m_relpos2CrossNormal
btScalar dot(const btQuaternion &q1, const btQuaternion &q2)
Calculate the dot product between two quaternions.
virtual int getIslandIdB() const
T & expandNonInitializing()
btVector3 m_contactNormal1
int getCompanionId() const
float btScalar
The btScalar type abstracts floating point numbers, to easily switch between double and single floati...