btSequentialImpulseConstraintSolver Class Reference

The btSequentialImpulseConstraintSolver is a fast SIMD implementation of the Projected Gauss Seidel (iterative LCP) method. More...

#include <btSequentialImpulseConstraintSolver.h>

Inheritance diagram for btSequentialImpulseConstraintSolver:
Inheritance graph
[legend]
Collaboration diagram for btSequentialImpulseConstraintSolver:
Collaboration graph
[legend]

List of all members.

Public Member Functions

 btSequentialImpulseConstraintSolver ()
virtual ~btSequentialImpulseConstraintSolver ()
virtual btScalar solveGroup (btCollisionObject **bodies, int numBodies, btPersistentManifold **manifold, int numManifolds, btTypedConstraint **constraints, int numConstraints, const btContactSolverInfo &info, btIDebugDraw *debugDrawer, btStackAlloc *stackAlloc, btDispatcher *dispatcher)
 btSequentialImpulseConstraintSolver Sequentially applies impulses
btScalar solveGroupCacheFriendlySetup (btCollisionObject **bodies, int numBodies, btPersistentManifold **manifoldPtr, int numManifolds, btTypedConstraint **constraints, int numConstraints, const btContactSolverInfo &infoGlobal, btIDebugDraw *debugDrawer, btStackAlloc *stackAlloc)
btScalar solveGroupCacheFriendlyIterations (btCollisionObject **bodies, int numBodies, btPersistentManifold **manifoldPtr, int numManifolds, btTypedConstraint **constraints, int numConstraints, const btContactSolverInfo &infoGlobal, btIDebugDraw *debugDrawer, btStackAlloc *stackAlloc)
virtual void reset ()
 clear internal cached data and reset random seed
unsigned long btRand2 ()
int btRandInt2 (int n)
void setRandSeed (unsigned long seed)
unsigned long getRandSeed () const

Protected Member Functions

btSolverConstraintaddFrictionConstraint (const btVector3 &normalAxis, btRigidBody *solverBodyA, btRigidBody *solverBodyB, int frictionIndex, btManifoldPoint &cp, const btVector3 &rel_pos1, const btVector3 &rel_pos2, btCollisionObject *colObj0, btCollisionObject *colObj1, btScalar relaxation, btScalar desiredVelocity=0., btScalar cfmSlip=0.)
btScalar restitutionCurve (btScalar rel_vel, btScalar restitution)
void convertContact (btPersistentManifold *manifold, const btContactSolverInfo &infoGlobal)
void resolveSplitPenetrationSIMD (btRigidBody &body1, btRigidBody &body2, const btSolverConstraint &contactConstraint)
void resolveSplitPenetrationImpulseCacheFriendly (btRigidBody &body1, btRigidBody &body2, const btSolverConstraint &contactConstraint)
int getOrInitSolverBody (btCollisionObject &body)
void resolveSingleConstraintRowGeneric (btRigidBody &body1, btRigidBody &body2, const btSolverConstraint &contactConstraint)
void resolveSingleConstraintRowGenericSIMD (btRigidBody &body1, btRigidBody &body2, const btSolverConstraint &contactConstraint)
void resolveSingleConstraintRowLowerLimit (btRigidBody &body1, btRigidBody &body2, const btSolverConstraint &contactConstraint)
void resolveSingleConstraintRowLowerLimitSIMD (btRigidBody &body1, btRigidBody &body2, const btSolverConstraint &contactConstraint)

Static Protected Member Functions

static btRigidBodygetFixedBody ()

Protected Attributes

btConstraintArray m_tmpSolverContactConstraintPool
btConstraintArray m_tmpSolverNonContactConstraintPool
btConstraintArray m_tmpSolverContactFrictionConstraintPool
btAlignedObjectArray< int > m_orderTmpConstraintPool
btAlignedObjectArray< int > m_orderFrictionConstraintPool
btAlignedObjectArray
< btTypedConstraint::btConstraintInfo1
m_tmpConstraintSizesPool
unsigned long m_btSeed2
 m_btSeed2 is used for re-arranging the constraint rows. improves convergence/quality of friction

Detailed Description

The btSequentialImpulseConstraintSolver is a fast SIMD implementation of the Projected Gauss Seidel (iterative LCP) method.

Definition at line 28 of file btSequentialImpulseConstraintSolver.h.


Constructor & Destructor Documentation

btSequentialImpulseConstraintSolver::btSequentialImpulseConstraintSolver (  ) 

Definition at line 39 of file btSequentialImpulseConstraintSolver.cpp.

btSequentialImpulseConstraintSolver::~btSequentialImpulseConstraintSolver (  )  [virtual]

Definition at line 45 of file btSequentialImpulseConstraintSolver.cpp.


Member Function Documentation

btSolverConstraint & btSequentialImpulseConstraintSolver::addFrictionConstraint ( const btVector3 normalAxis,
btRigidBody solverBodyA,
btRigidBody solverBodyB,
int  frictionIndex,
btManifoldPoint cp,
const btVector3 rel_pos1,
const btVector3 rel_pos2,
btCollisionObject colObj0,
btCollisionObject colObj1,
btScalar  relaxation,
btScalar  desiredVelocity = 0.,
btScalar  cfmSlip = 0. 
) [protected]

Definition at line 333 of file btSequentialImpulseConstraintSolver.cpp.

unsigned long btSequentialImpulseConstraintSolver::btRand2 (  ) 

Definition at line 243 of file btSequentialImpulseConstraintSolver.cpp.

int btSequentialImpulseConstraintSolver::btRandInt2 ( int  n  ) 

Definition at line 252 of file btSequentialImpulseConstraintSolver.cpp.

void btSequentialImpulseConstraintSolver::convertContact ( btPersistentManifold manifold,
const btContactSolverInfo infoGlobal 
) [protected]

avoid collision response between two static objects

warm starting (or zero if disabled)

Definition at line 451 of file btSequentialImpulseConstraintSolver.cpp.

static btRigidBody& btSequentialImpulseConstraintSolver::getFixedBody (  )  [inline, static, protected]

Definition at line 72 of file btSequentialImpulseConstraintSolver.h.

int btSequentialImpulseConstraintSolver::getOrInitSolverBody ( btCollisionObject body  )  [protected]

Definition at line 420 of file btSequentialImpulseConstraintSolver.cpp.

unsigned long btSequentialImpulseConstraintSolver::getRandSeed (  )  const [inline]

Definition at line 101 of file btSequentialImpulseConstraintSolver.h.

void btSequentialImpulseConstraintSolver::reset (  )  [virtual]

clear internal cached data and reset random seed

Implements btConstraintSolver.

Definition at line 1137 of file btSequentialImpulseConstraintSolver.cpp.

void btSequentialImpulseConstraintSolver::resolveSingleConstraintRowGeneric ( btRigidBody body1,
btRigidBody body2,
const btSolverConstraint contactConstraint 
) [protected]

Definition at line 94 of file btSequentialImpulseConstraintSolver.cpp.

void btSequentialImpulseConstraintSolver::resolveSingleConstraintRowGenericSIMD ( btRigidBody body1,
btRigidBody body2,
const btSolverConstraint contactConstraint 
) [protected]

Definition at line 60 of file btSequentialImpulseConstraintSolver.cpp.

void btSequentialImpulseConstraintSolver::resolveSingleConstraintRowLowerLimit ( btRigidBody body1,
btRigidBody body2,
const btSolverConstraint contactConstraint 
) [protected]

Definition at line 154 of file btSequentialImpulseConstraintSolver.cpp.

void btSequentialImpulseConstraintSolver::resolveSingleConstraintRowLowerLimitSIMD ( btRigidBody body1,
btRigidBody body2,
const btSolverConstraint contactConstraint 
) [protected]

Definition at line 123 of file btSequentialImpulseConstraintSolver.cpp.

void btSequentialImpulseConstraintSolver::resolveSplitPenetrationImpulseCacheFriendly ( btRigidBody body1,
btRigidBody body2,
const btSolverConstraint contactConstraint 
) [protected]

Definition at line 177 of file btSequentialImpulseConstraintSolver.cpp.

void btSequentialImpulseConstraintSolver::resolveSplitPenetrationSIMD ( btRigidBody body1,
btRigidBody body2,
const btSolverConstraint contactConstraint 
) [protected]

Definition at line 206 of file btSequentialImpulseConstraintSolver.cpp.

btScalar btSequentialImpulseConstraintSolver::restitutionCurve ( btScalar  rel_vel,
btScalar  restitution 
) [protected]

Definition at line 308 of file btSequentialImpulseConstraintSolver.cpp.

void btSequentialImpulseConstraintSolver::setRandSeed ( unsigned long  seed  )  [inline]

Definition at line 97 of file btSequentialImpulseConstraintSolver.h.

btScalar btSequentialImpulseConstraintSolver::solveGroup ( btCollisionObject **  bodies,
int  numBodies,
btPersistentManifold **  manifold,
int  numManifolds,
btTypedConstraint **  constraints,
int  numConstraints,
const btContactSolverInfo info,
btIDebugDraw debugDrawer,
btStackAlloc stackAlloc,
btDispatcher dispatcher 
) [virtual]

btSequentialImpulseConstraintSolver Sequentially applies impulses

Implements btConstraintSolver.

Definition at line 1057 of file btSequentialImpulseConstraintSolver.cpp.

btScalar btSequentialImpulseConstraintSolver::solveGroupCacheFriendlyIterations ( btCollisionObject **  bodies,
int  numBodies,
btPersistentManifold **  manifoldPtr,
int  numManifolds,
btTypedConstraint **  constraints,
int  numConstraints,
const btContactSolverInfo infoGlobal,
btIDebugDraw debugDrawer,
btStackAlloc stackAlloc 
)

solve all joint constraints, using SIMD, if available

solve all contact constraints using SIMD, if available

solve all friction constraints, using SIMD, if available

solve all joint constraints

solve all contact constraints

solve all friction constraints

Definition at line 904 of file btSequentialImpulseConstraintSolver.cpp.

btScalar btSequentialImpulseConstraintSolver::solveGroupCacheFriendlySetup ( btCollisionObject **  bodies,
int  numBodies,
btPersistentManifold **  manifoldPtr,
int  numManifolds,
btTypedConstraint **  constraints,
int  numConstraints,
const btContactSolverInfo infoGlobal,
btIDebugDraw debugDrawer,
btStackAlloc stackAlloc 
)

setup the btSolverConstraints

the size of btSolverConstraint needs be a multiple of btScalar

finalize the constraint setup

fix rhs todo: add force/torque accelerators

Reimplemented in btParallelConstraintSolver.

Definition at line 711 of file btSequentialImpulseConstraintSolver.cpp.


Member Data Documentation

m_btSeed2 is used for re-arranging the constraint rows. improves convergence/quality of friction

Definition at line 42 of file btSequentialImpulseConstraintSolver.h.

Definition at line 36 of file btSequentialImpulseConstraintSolver.h.

Definition at line 35 of file btSequentialImpulseConstraintSolver.h.

Definition at line 37 of file btSequentialImpulseConstraintSolver.h.

Definition at line 32 of file btSequentialImpulseConstraintSolver.h.

Definition at line 34 of file btSequentialImpulseConstraintSolver.h.

Definition at line 33 of file btSequentialImpulseConstraintSolver.h.


The documentation for this class was generated from the following files:

Generated on Mon Feb 15 22:23:37 2010 for Bullet Collision Detection & Physics Library by  doxygen 1.6.1