16 #ifndef BT_MULTIBODY_CONSTRAINT_H 17 #define BT_MULTIBODY_CONSTRAINT_H 86 void updateJacobianSizes();
87 void allocateJacobiansMultiDof();
89 virtual void finalizeMultiDof()=0;
91 virtual int getIslandIdA()
const =0;
92 virtual int getIslandIdB()
const =0;
116 m_data[dof] = appliedImpulse;
130 return m_data[m_posOffset + row];
135 m_data[m_posOffset + row] = pos;
141 return m_isUnilateral;
149 return &m_data[m_numRows + row * m_jacSizeBoth];
153 return &m_data[m_numRows + (row * m_jacSizeBoth)];
157 return &m_data[m_numRows + (row * m_jacSizeBoth) + m_jacSizeA];
161 return &m_data[m_numRows + (row * m_jacSizeBoth) + m_jacSizeA];
166 return m_maxAppliedImpulse;
170 m_maxAppliedImpulse = maxImp;
177 #endif //BT_MULTIBODY_CONSTRAINT_H btScalar getMaxAppliedImpulse() const
btScalar * jacobianB(int row)
btMultiBody * getMultiBodyA()
1D constraint along a normal axis between bodyA and bodyB. It can be combined to solve contact and fr...
btAlignedObjectArray< btScalar > scratch_r
btAlignedObjectArray< btScalar > m_deltaVelocities
btAlignedObjectArray< btSolverBody > * m_solverBodyPool
btScalar m_maxAppliedImpulse
btScalar getAppliedImpulse(int dof)
void internalSetAppliedImpulse(int dof, btScalar appliedImpulse)
btScalar * jacobianA(int row)
btAlignedObjectArray< btMatrix3x3 > scratch_m
btAlignedObjectArray< btScalar > m_deltaVelocitiesUnitImpulse
bool isUnilateral() const
btScalar getPosition(int row) const
The btIDebugDraw interface class allows hooking up a debug renderer to visually debug simulations...
btAlignedObjectArray< btScalar > m_data
btAlignedObjectArray< btScalar > m_jacobians
const btScalar * jacobianA(int row) const
btVector3 can be used to represent 3D points and vectors.
btAlignedObjectArray< btVector3 > scratch_v
void setPosition(int row, btScalar pos)
void setMaxAppliedImpulse(btScalar maxImp)
const btScalar * jacobianB(int row) const
btMultiBody * getMultiBodyB()
float btScalar
The btScalar type abstracts floating point numbers, to easily switch between double and single floati...