Bullet Collision Detection & Physics Library
|
Go to the documentation of this file.
16 #ifndef BT_SEQUENTIAL_IMPULSE_CONSTRAINT_SOLVER_H
17 #define BT_SEQUENTIAL_IMPULSE_CONSTRAINT_SOLVER_H
62 void setupSolverFunctions(
bool useSimd);
66 void setupFrictionConstraint(
btSolverConstraint & solverConstraint,
const btVector3& normalAxis,
int solverBodyIdA,
int solverBodyIdB,
72 void setupTorsionalFrictionConstraint(
btSolverConstraint & solverConstraint,
const btVector3& normalAxis,
int solverBodyIdA,
int solverBodyIdB,
77 btSolverConstraint& addFrictionConstraint(
const btVector3& normalAxis,
int solverBodyIdA,
int solverBodyIdB,
int frictionIndex,
btManifoldPoint& cp,
const btVector3& rel_pos1,
const btVector3& rel_pos2,
btCollisionObject* colObj0,
btCollisionObject* colObj1,
btScalar relaxation,
const btContactSolverInfo& infoGlobal,
btScalar desiredVelocity = 0.,
btScalar cfmSlip = 0.);
78 btSolverConstraint& addTorsionalFrictionConstraint(
const btVector3& normalAxis,
int solverBodyIdA,
int solverBodyIdB,
int frictionIndex,
btManifoldPoint& cp,
btScalar torsionalFriction,
const btVector3& rel_pos1,
const btVector3& rel_pos2,
btCollisionObject* colObj0,
btCollisionObject* colObj1,
btScalar relaxation,
btScalar desiredVelocity = 0,
btScalar cfmSlip = 0.f);
85 void setFrictionConstraintImpulse(
btSolverConstraint & solverConstraint,
int solverBodyIdA,
int solverBodyIdB,
104 return m_resolveSplitPenetrationImpulse(bodyA, bodyB, contactConstraint);
109 return m_resolveSplitPenetrationImpulse(bodyA, bodyB, contactConstraint);
122 return m_resolveSplitPenetrationImpulse(bodyA, bodyB, contactConstraint);
145 virtual void reset();
147 unsigned long btRand2();
149 int btRandInt2(
int n);
167 return m_resolveSingleConstraintRowGeneric;
171 m_resolveSingleConstraintRowGeneric = rowSolver;
175 return m_resolveSingleConstraintRowLowerLimit;
179 m_resolveSingleConstraintRowLowerLimit = rowSolver;
193 #endif //BT_SEQUENTIAL_IMPULSE_CONSTRAINT_SOLVER_H
btConstraintArray m_tmpSolverContactFrictionConstraintPool
The btSolverBody is an internal datastructure for the constraint solver. Only necessary data is packe...
TypedConstraint is the baseclass for Bullet constraints and vehicles.
btCollisionObject can be used to manage collision detection objects.
btScalar resolveSplitPenetrationImpulse(btSolverBody &bodyA, btSolverBody &bodyB, const btSolverConstraint &contactConstraint)
1D constraint along a normal axis between bodyA and bodyB. It can be combined to solve contact and fr...
void setConstraintRowSolverGeneric(btSingleConstraintRowSolver rowSolver)
float btScalar
The btScalar type abstracts floating point numbers, to easily switch between double and single floati...
The btDispatcher interface class can be used in combination with broadphase to dispatch calculations ...
btAlignedObjectArray< int > m_orderFrictionConstraintPool
btScalar(* btSingleConstraintRowSolver)(btSolverBody &, btSolverBody &, const btSolverConstraint &)
unsigned long m_btSeed2
m_btSeed2 is used for re-arranging the constraint rows. improves convergence/quality of friction
btConstraintArray m_tmpSolverContactRollingFrictionConstraintPool
btAlignedObjectArray< int > m_kinematicBodyUniqueIdToSolverBodyTable
void setConstraintRowSolverLowerLimit(btSingleConstraintRowSolver rowSolver)
btSingleConstraintRowSolver m_resolveSingleConstraintRowGeneric
The btIDebugDraw interface class allows hooking up a debug renderer to visually debug simulations.
ManifoldContactPoint collects and maintains persistent contactpoints.
btScalar resolveSplitPenetrationImpulseCacheFriendly(btSolverBody &bodyA, btSolverBody &bodyB, const btSolverConstraint &contactConstraint)
btSingleConstraintRowSolver m_resolveSingleConstraintRowLowerLimit
btAlignedObjectArray< int > m_orderTmpConstraintPool
#define BT_DECLARE_ALIGNED_ALLOCATOR()
btVector3 can be used to represent 3D points and vectors.
int m_maxOverrideNumSolverIterations
btPersistentManifold is a contact point cache, it stays persistent as long as objects are overlapping...
#define ATTRIBUTE_ALIGNED16(a)
btConstraintArray m_tmpSolverContactConstraintPool
unsigned long getRandSeed() const
virtual btConstraintSolverType getSolverType() const
btSingleConstraintRowSolver getActiveConstraintRowSolverGeneric()
btAlignedObjectArray< btTypedConstraint::btConstraintInfo1 > m_tmpConstraintSizesPool
btAlignedObjectArray< int > m_orderNonContactConstraintPool
btAlignedObjectArray< btSolverBody > m_tmpSolverBodyPool
The btSequentialImpulseConstraintSolver is a fast SIMD implementation of the Projected Gauss Seidel (...
btSingleConstraintRowSolver m_resolveSplitPenetrationImpulse
btConstraintSolverType
btConstraintSolver provides solver interface
btSingleConstraintRowSolver getActiveConstraintRowSolverLowerLimit()
btConstraintArray m_tmpSolverNonContactConstraintPool
btScalar resolveSplitPenetrationSIMD(btSolverBody &bodyA, btSolverBody &bodyB, const btSolverConstraint &contactConstraint)
void setRandSeed(unsigned long seed)
btScalar m_leastSquaresResidual