16#ifndef BT_SEQUENTIAL_IMPULSE_CONSTRAINT_SOLVER_H
17#define BT_SEQUENTIAL_IMPULSE_CONSTRAINT_SOLVER_H
61 void setupSolverFunctions(
bool useSimd );
65 void setupFrictionConstraint(
btSolverConstraint& solverConstraint,
const btVector3& normalAxis,
int solverBodyIdA,
int solverBodyIdB,
71 void setupTorsionalFrictionConstraint(
btSolverConstraint& solverConstraint,
const btVector3& normalAxis,
int solverBodyIdA,
int solverBodyIdB,
76 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.);
77 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,
101 return m_resolveSplitPenetrationImpulse( bodyA, bodyB, contactConstraint );
106 return m_resolveSplitPenetrationImpulse( bodyA, bodyB, contactConstraint );
119 return m_resolveSplitPenetrationImpulse( bodyA, bodyB, contactConstraint );
143 virtual void reset();
145 unsigned long btRand2();
147 int btRandInt2 (
int n);
166 return m_resolveSingleConstraintRowGeneric;
170 m_resolveSingleConstraintRowGeneric = rowSolver;
174 return m_resolveSingleConstraintRowLowerLimit;
178 m_resolveSingleConstraintRowLowerLimit = rowSolver;
btConstraintSolverType
btConstraintSolver provides solver interface
@ BT_SEQUENTIAL_IMPULSE_SOLVER
float btScalar
The btScalar type abstracts floating point numbers, to easily switch between double and single floati...
#define ATTRIBUTE_ALIGNED16(a)
btSimdScalar(* btSingleConstraintRowSolver)(btSolverBody &, btSolverBody &, const btSolverConstraint &)
#define btSimdScalar
Until we get other contributions, only use SIMD on Windows, when using Visual Studio 2008 or later,...
The btAlignedObjectArray template class uses a subset of the stl::vector interface for its methods It...
btCollisionObject can be used to manage collision detection objects.
The btDispatcher interface class can be used in combination with broadphase to dispatch calculations ...
The btIDebugDraw interface class allows hooking up a debug renderer to visually debug simulations.
ManifoldContactPoint collects and maintains persistent contactpoints.
btPersistentManifold is a contact point cache, it stays persistent as long as objects are overlapping...
The btSequentialImpulseConstraintSolver is a fast SIMD implementation of the Projected Gauss Seidel (...
btSimdScalar resolveSplitPenetrationImpulse(btSolverBody &bodyA, btSolverBody &bodyB, const btSolverConstraint &contactConstraint)
btSingleConstraintRowSolver getSSE2ConstraintRowSolverGeneric()
btConstraintArray m_tmpSolverContactConstraintPool
int m_maxOverrideNumSolverIterations
btConstraintArray m_tmpSolverContactFrictionConstraintPool
btAlignedObjectArray< int > m_orderFrictionConstraintPool
btSingleConstraintRowSolver getActiveConstraintRowSolverLowerLimit()
btSingleConstraintRowSolver getActiveConstraintRowSolverGeneric()
unsigned long getRandSeed() const
virtual btConstraintSolverType getSolverType() const
unsigned long m_btSeed2
m_btSeed2 is used for re-arranging the constraint rows. improves convergence/quality of friction
btSimdScalar resolveSplitPenetrationSIMD(btSolverBody &bodyA, btSolverBody &bodyB, const btSolverConstraint &contactConstraint)
btSingleConstraintRowSolver getSSE2ConstraintRowSolverLowerLimit()
void setRandSeed(unsigned long seed)
btScalar m_leastSquaresResidual
btAlignedObjectArray< btSolverBody > m_tmpSolverBodyPool
btSingleConstraintRowSolver m_resolveSingleConstraintRowLowerLimit
BT_DECLARE_ALIGNED_ALLOCATOR()
btSingleConstraintRowSolver m_resolveSplitPenetrationImpulse
btAlignedObjectArray< btTypedConstraint::btConstraintInfo1 > m_tmpConstraintSizesPool
btAlignedObjectArray< int > m_orderTmpConstraintPool
btAlignedObjectArray< int > m_orderNonContactConstraintPool
btSingleConstraintRowSolver getSSE4_1ConstraintRowSolverGeneric()
void setConstraintRowSolverGeneric(btSingleConstraintRowSolver rowSolver)
btAlignedObjectArray< int > m_kinematicBodyUniqueIdToSolverBodyTable
btConstraintArray m_tmpSolverNonContactConstraintPool
btSingleConstraintRowSolver m_resolveSingleConstraintRowGeneric
btSimdScalar resolveSplitPenetrationImpulseCacheFriendly(btSolverBody &bodyA, btSolverBody &bodyB, const btSolverConstraint &contactConstraint)
btConstraintArray m_tmpSolverContactRollingFrictionConstraintPool
void setConstraintRowSolverLowerLimit(btSingleConstraintRowSolver rowSolver)
btSingleConstraintRowSolver getSSE4_1ConstraintRowSolverLowerLimit()
TypedConstraint is the baseclass for Bullet constraints and vehicles.
btVector3 can be used to represent 3D points and vectors.
The btSolverBody is an internal datastructure for the constraint solver. Only necessary data is packe...
1D constraint along a normal axis between bodyA and bodyB. It can be combined to solve contact and fr...