23 #ifndef BTMBP2PCONSTRAINT_BLOCK_ANGULAR_MOTION_TEST
24 #define BTMBP2PCONSTRAINT_DIM 3
26 #define BTMBP2PCONSTRAINT_DIM 6
106 for (
int i=0;i<numDim;i++)
122 #ifndef BTMBP2PCONSTRAINT_BLOCK_ANGULAR_MOTION_TEST
123 contactNormalOnB[i] = -1;
125 contactNormalOnB[i%3] = -1;
153 btScalar posError = i < 3 ? (pivotAworld-pivotBworld).
dot(contactNormalOnB) : 0;
155 #ifndef BTMBP2PCONSTRAINT_BLOCK_ANGULAR_MOTION_TEST
159 contactNormalOnB, pivotAworld, pivotBworld,
172 const btVector3 &normalAng = i >= 3 ? contactNormalOnB : dummy;
173 const btVector3 &normalLin = i < 3 ? contactNormalOnB : dummy;
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)
virtual ~btMultiBodyPoint2Point()
const btMultibodyLink & getLink(int index) const
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
btAlignedObjectArray< btScalar > scratch_r
void setValue(const btScalar &_x, const btScalar &_y, const btScalar &_z)
btScalar m_maxAppliedImpulse
btVector3 m_angularComponentA
btVector3 m_angularComponentB
class btMultiBodyLinkCollider * m_collider
virtual int getIslandIdA() const
btScalar * jacobianA(int row)
btMultiBodyPoint2Point(btMultiBody *body, int link, btRigidBody *bodyB, const btVector3 &pivotInA, const btVector3 &pivotInB)
btAlignedObjectArray< btMatrix3x3 > scratch_m
btRigidBody * m_rigidBodyB
const btTransform & getCenterOfMassTransform() const
btRigidBody * m_rigidBodyA
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
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.
btVector3 can be used to represent 3D points and vectors.
int getCompanionId() const
virtual void finalizeMultiDof()
btAlignedObjectArray< btVector3 > scratch_v
#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.
const btMultiBodyLinkCollider * getBaseCollider() const
virtual int getIslandIdB() const
btVector3 localPosToWorld(int i, const btVector3 &vec) const
T & expandNonInitializing()
btVector3 m_contactNormal1
float btScalar
The btScalar type abstracts floating point numbers, to easily switch between double and single floati...