16 #ifndef BT_MULTIBODY_CONSTRAINT_H
17 #define BT_MULTIBODY_CONSTRAINT_H
94 bool angConstraint =
false,
97 bool isFriction =
false,
btScalar desiredVelocity = 0,
btScalar cfmSlip = 0);
151 m_data[dof] = appliedImpulse;
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum type
btFixedConstraint btRigidBody const btTransform const btTransform & frameInB
btMatrix3x3
The btMatrix3x3 class implements a 3x3 rotation matrix, to perform linear algebra in combination with...
btScalar getMaxAppliedImpulse() const
btTypedMultiBodyConstraintType
@ MAX_MULTIBODY_CONSTRAINT_TYPE
@ MULTIBODY_CONSTRAINT_LIMIT
@ MULTIBODY_CONSTRAINT_SLIDER
@ MULTIBODY_CONSTRAINT_FIXED
@ MULTIBODY_CONSTRAINT_POINT_TO_POINT
@ MULTIBODY_CONSTRAINT_GEAR
@ MULTIBODY_CONSTRAINT_1DOF_JOINT_MOTOR
@ MULTIBODY_CONSTRAINT_SPHERICAL_MOTOR
virtual void createConstraintRows(btMultiBodyConstraintArray &constraintRows, btMultiBodyJacobianData &data, const btContactSolverInfo &infoGlobal)=0
BT_DECLARE_ALIGNED_ALLOCATOR()
void setMaxAppliedImpulse(btScalar maxImp)
virtual void setRelativePositionTarget(btScalar relPosTarget)
btScalar getPosition(int row) const
virtual void finalizeMultiDof()=0
void updateJacobianSizes()
virtual void setGearAuxLink(int gearAuxLink)
virtual void setErp(btScalar erp)
void applyDeltaVee(btMultiBodyJacobianData &data, btScalar *delta_vee, btScalar impulse, int velocityIndex, int ndof)
void setPosition(int row, btScalar pos)
virtual void setFrameInB(const btMatrix3x3 &frameInB)
btScalar getAppliedImpulse(int dof)
virtual void setGearRatio(btScalar ratio)
btScalar * jacobianB(int row)
btAlignedObjectArray< btScalar > m_data
virtual int getIslandIdA() const =0
btMultiBody * getMultiBodyB()
bool isUnilateral() const
virtual int getIslandIdB() const =0
void allocateJacobiansMultiDof()
virtual ~btMultiBodyConstraint()
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 void debugDraw(class btIDebugDraw *drawer)=0
void internalSetAppliedImpulse(int dof, btScalar appliedImpulse)
btScalar m_maxAppliedImpulse
btScalar * jacobianA(int row)
virtual void setPivotInB(const btVector3 &pivotInB)
btMultiBody * getMultiBodyA()
int getConstraintType() const
btMultiBodySolverConstraint
1D constraint along a normal axis between bodyA and bodyB. It can be combined to solve contact and fr...
float btScalar
The btScalar type abstracts floating point numbers, to easily switch between double and single floati...
#define ATTRIBUTE_ALIGNED16(a)
btSequentialImpulseConstraintSolverMt int btPersistentManifold int btTypedConstraint int const btContactSolverInfo & infoGlobal
btVector3
btVector3 can be used to represent 3D points and vectors. It has an un-used w component to suit 16-by...
btAlignedObjectArray< btScalar > m_deltaVelocitiesUnitImpulse
btAlignedObjectArray< btScalar > m_deltaVelocities
btAlignedObjectArray< btScalar > m_jacobians
btAlignedObjectArray< btSolverBody > * m_solverBodyPool
btAlignedObjectArray< btScalar > scratch_r
btAlignedObjectArray< btMatrix3x3 > scratch_m
btAlignedObjectArray< btVector3 > scratch_v