Bullet Collision Detection & Physics Library: btNNCGConstraintSolver Class Reference

Bullet Collision Detection & Physics Library

Public Member Functions | Public Attributes | Protected Member Functions | Protected Attributes | List of all members
btNNCGConstraintSolver Class Reference

`#include <btNNCGConstraintSolver.h>`

Inheritance diagram for btNNCGConstraintSolver:
[legend]
Collaboration diagram for btNNCGConstraintSolver:
[legend]

## Public Member Functions
| BT_DECLARE_ALIGNED_ALLOCATOR ()
| btNNCGConstraintSolver ()
virtual btConstraintSolverType | getSolverType () const
Public Member Functions inherited from btSequentialImpulseConstraintSolver
| BT_DECLARE_ALIGNED_ALLOCATOR ()
| btSequentialImpulseConstraintSolver ()
virtual | ~btSequentialImpulseConstraintSolver ()
virtual btScalar | solveGroup (btCollisionObject **bodies, int numBodies, btPersistentManifold **manifold, int numManifolds, btTypedConstraint **constraints, int numConstraints, const btContactSolverInfo &info, btIDebugDraw *debugDrawer, btDispatcher *dispatcher)
| btSequentialImpulseConstraintSolver Sequentially applies impulses
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
btSingleConstraintRowSolver | getActiveConstraintRowSolverGeneric ()
void | setConstraintRowSolverGeneric (btSingleConstraintRowSolver rowSolver)
btSingleConstraintRowSolver | getActiveConstraintRowSolverLowerLimit ()
void | setConstraintRowSolverLowerLimit (btSingleConstraintRowSolver rowSolver)
btSingleConstraintRowSolver | getScalarConstraintRowSolverGeneric ()
| Various implementations of solving a single constraint row using a generic equality constraint, using scalar reference, SSE2 or SSE4.
btSingleConstraintRowSolver | getSSE2ConstraintRowSolverGeneric ()
btSingleConstraintRowSolver | getSSE4_1ConstraintRowSolverGeneric ()
btSingleConstraintRowSolver | getScalarConstraintRowSolverLowerLimit ()
| Various implementations of solving a single constraint row using an inequality (lower limit) constraint, using scalar reference, SSE2 or SSE4.
btSingleConstraintRowSolver | getSSE2ConstraintRowSolverLowerLimit ()
btSingleConstraintRowSolver | getSSE4_1ConstraintRowSolverLowerLimit ()
Public Member Functions inherited from btConstraintSolver
virtual | ~btConstraintSolver ()
virtual void | prepareSolve (int, int)
virtual void | allSolved (const btContactSolverInfo &, class btIDebugDraw *)

## Public Attributes
bool | m_onlyForNoneContact
Public Attributes inherited from btSequentialImpulseConstraintSolver
btSolverAnalyticsData | m_analyticsData

## Protected Member Functions
virtual btScalar | solveGroupCacheFriendlyFinish (btCollisionObject **bodies, int numBodies, const btContactSolverInfo &infoGlobal)
virtual btScalar | solveSingleIteration (int iteration, btCollisionObject **bodies, int numBodies, btPersistentManifold **manifoldPtr, int numManifolds, btTypedConstraint **constraints, int numConstraints, const btContactSolverInfo &infoGlobal, btIDebugDraw *debugDrawer)
virtual btScalar | solveGroupCacheFriendlySetup (btCollisionObject **bodies, int numBodies, btPersistentManifold **manifoldPtr, int numManifolds, btTypedConstraint **constraints, int numConstraints, const btContactSolverInfo &infoGlobal, btIDebugDraw *debugDrawer)
Protected Member Functions inherited from btSequentialImpulseConstraintSolver
void | setupSolverFunctions (bool useSimd)
void | setupFrictionConstraint (btSolverConstraint &solverConstraint, const btVector3 &normalAxis, int solverBodyIdA, int solverBodyIdB, 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.)
void | setupTorsionalFrictionConstraint (btSolverConstraint &solverConstraint, const btVector3 &normalAxis, int solverBodyIdA, int solverBodyIdB, btManifoldPoint &cp, btScalar combinedTorsionalFriction, const btVector3 &rel_pos1, const btVector3 &rel_pos2, btCollisionObject *colObj0, btCollisionObject *colObj1, btScalar relaxation, btScalar desiredVelocity=0., btScalar cfmSlip=0.)
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.)
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)
void | setupContactConstraint (btSolverConstraint &solverConstraint, int solverBodyIdA, int solverBodyIdB, btManifoldPoint &cp, const btContactSolverInfo &infoGlobal, btScalar &relaxation, const btVector3 &rel_pos1, const btVector3 &rel_pos2)
void | setFrictionConstraintImpulse (btSolverConstraint &solverConstraint, int solverBodyIdA, int solverBodyIdB, btManifoldPoint &cp, const btContactSolverInfo &infoGlobal)
btScalar | restitutionCurve (btScalar rel_vel, btScalar restitution, btScalar velocityThreshold)
virtual void | convertContacts (btPersistentManifold **manifoldPtr, int numManifolds, const btContactSolverInfo &infoGlobal)
void | convertContact (btPersistentManifold *manifold, const btContactSolverInfo &infoGlobal)
virtual void | convertJoints (btTypedConstraint **constraints, int numConstraints, const btContactSolverInfo &infoGlobal)
void | convertJoint (btSolverConstraint *currentConstraintRow, btTypedConstraint *constraint, const btTypedConstraint::btConstraintInfo1 &info1, int solverBodyIdA, int solverBodyIdB, const btContactSolverInfo &infoGlobal)
virtual void | convertBodies (btCollisionObject **bodies, int numBodies, const btContactSolverInfo &infoGlobal)
btScalar | resolveSplitPenetrationSIMD (btSolverBody &bodyA, btSolverBody &bodyB, const btSolverConstraint &contactConstraint)
btScalar | resolveSplitPenetrationImpulseCacheFriendly (btSolverBody &bodyA, btSolverBody &bodyB, const btSolverConstraint &contactConstraint)
int | getOrInitSolverBody (btCollisionObject &body, btScalar timeStep)
void | initSolverBody (btSolverBody *solverBody, btCollisionObject *collisionObject, btScalar timeStep)
btScalar | resolveSingleConstraintRowGeneric (btSolverBody &bodyA, btSolverBody &bodyB, const btSolverConstraint &contactConstraint)
btScalar | resolveSingleConstraintRowGenericSIMD (btSolverBody &bodyA, btSolverBody &bodyB, const btSolverConstraint &contactConstraint)
btScalar | resolveSingleConstraintRowLowerLimit (btSolverBody &bodyA, btSolverBody &bodyB, const btSolverConstraint &contactConstraint)
btScalar | resolveSingleConstraintRowLowerLimitSIMD (btSolverBody &bodyA, btSolverBody &bodyB, const btSolverConstraint &contactConstraint)
btScalar | resolveSplitPenetrationImpulse (btSolverBody &bodyA, btSolverBody &bodyB, const btSolverConstraint &contactConstraint)
void | writeBackContacts (int iBegin, int iEnd, const btContactSolverInfo &infoGlobal)
void | writeBackJoints (int iBegin, int iEnd, const btContactSolverInfo &infoGlobal)
void | writeBackBodies (int iBegin, int iEnd, const btContactSolverInfo &infoGlobal)
virtual void | solveGroupCacheFriendlySplitImpulseIterations (btCollisionObject **bodies, int numBodies, btPersistentManifold **manifoldPtr, int numManifolds, btTypedConstraint **constraints, int numConstraints, const btContactSolverInfo &infoGlobal, btIDebugDraw *debugDrawer)
virtual btScalar | solveGroupCacheFriendlyIterations (btCollisionObject **bodies, int numBodies, btPersistentManifold **manifoldPtr, int numManifolds, btTypedConstraint **constraints, int numConstraints, const btContactSolverInfo &infoGlobal, btIDebugDraw *debugDrawer)

## Protected Attributes
btScalar | m_deltafLengthSqrPrev
btAlignedObjectArray< btScalar > | m_pNC
btAlignedObjectArray< btScalar > | m_pC
btAlignedObjectArray< btScalar > | m_pCF
btAlignedObjectArray< btScalar > | m_pCRF
btAlignedObjectArray< btScalar > | m_deltafNC
btAlignedObjectArray< btScalar > | m_deltafC
btAlignedObjectArray< btScalar > | m_deltafCF
btAlignedObjectArray< btScalar > | m_deltafCRF
Protected Attributes inherited from btSequentialImpulseConstraintSolver
btAlignedObjectArray< btSolverBody > | m_tmpSolverBodyPool
btConstraintArray | m_tmpSolverContactConstraintPool
btConstraintArray | m_tmpSolverNonContactConstraintPool
btConstraintArray | m_tmpSolverContactFrictionConstraintPool
btConstraintArray | m_tmpSolverContactRollingFrictionConstraintPool
btAlignedObjectArray< int > | m_orderTmpConstraintPool
btAlignedObjectArray< int > | m_orderNonContactConstraintPool
btAlignedObjectArray< int > | m_orderFrictionConstraintPool
btAlignedObjectArray< btTypedConstraint::btConstraintInfo1 > | m_tmpConstraintSizesPool
int | m_maxOverrideNumSolverIterations
int | m_fixedBodyId
btAlignedObjectArray< int > | m_kinematicBodyUniqueIdToSolverBodyTable
btSingleConstraintRowSolver | m_resolveSingleConstraintRowGeneric
btSingleConstraintRowSolver | m_resolveSingleConstraintRowLowerLimit
btSingleConstraintRowSolver | m_resolveSplitPenetrationImpulse
int | m_cachedSolverMode
btScalar | m_leastSquaresResidual
unsigned long | m_btSeed2
| m_btSeed2 is used for re-arranging the constraint rows. improves convergence/quality of friction

## Additional Inherited Members
Static Protected Member Functions inherited from btSequentialImpulseConstraintSolver
static void | applyAnisotropicFriction (btCollisionObject *colObj, btVector3 &frictionDirection, int frictionMode)

## Detailed Description

Definition at line 21 of file btNNCGConstraintSolver.h.

## Constructor & Destructor Documentation

## ◆ btNNCGConstraintSolver()

btNNCGConstraintSolver::btNNCGConstraintSolver | ( |  | ) |
| inline

Definition at line 47 of file btNNCGConstraintSolver.h.

## Member Function Documentation

## ◆ BT_DECLARE_ALIGNED_ALLOCATOR()

btNNCGConstraintSolver::BT_DECLARE_ALIGNED_ALLOCATOR | ( |  | ) |

## ◆ getSolverType()

virtual btConstraintSolverType btNNCGConstraintSolver::getSolverType | ( |  | ) | const
| inlinevirtual

Reimplemented from btSequentialImpulseConstraintSolver.

Definition at line 49 of file btNNCGConstraintSolver.h.

## ◆ solveGroupCacheFriendlyFinish()

btScalar btNNCGConstraintSolver::solveGroupCacheFriendlyFinish | ( | btCollisionObject ** | bodies,
|  | int | numBodies,
|  | const btContactSolverInfo & | infoGlobal )
| protectedvirtual

Reimplemented from btSequentialImpulseConstraintSolver.

Definition at line 355 of file btNNCGConstraintSolver.cpp.

## ◆ solveGroupCacheFriendlySetup()

btScalar btNNCGConstraintSolver::solveGroupCacheFriendlySetup | ( | btCollisionObject ** | bodies,
|  | int | numBodies,
|  | btPersistentManifold ** | manifoldPtr,
|  | int | numManifolds,
|  | btTypedConstraint ** | constraints,
|  | int | numConstraints,
|  | const btContactSolverInfo & | infoGlobal,
|  | btIDebugDraw * | debugDrawer )
| protectedvirtual

Reimplemented from btSequentialImpulseConstraintSolver.

Definition at line 18 of file btNNCGConstraintSolver.cpp.

## ◆ solveSingleIteration()

btScalar btNNCGConstraintSolver::solveSingleIteration | ( | int | iteration,
|  | btCollisionObject ** | bodies,
|  | int | numBodies,
|  | btPersistentManifold ** | manifoldPtr,
|  | int | numManifolds,
|  | btTypedConstraint ** | constraints,
|  | int | numConstraints,
|  | const btContactSolverInfo & | infoGlobal,
|  | btIDebugDraw * | debugDrawer )
| protectedvirtual

solve all contact constraints

solve all friction constraints

Reimplemented from btSequentialImpulseConstraintSolver.

Definition at line 35 of file btNNCGConstraintSolver.cpp.

## Member Data Documentation

## ◆ m_deltafC

btAlignedObjectArray<btScalar> btNNCGConstraintSolver::m_deltafC
| protected

Definition at line 34 of file btNNCGConstraintSolver.h.

## ◆ m_deltafCF

btAlignedObjectArray<btScalar> btNNCGConstraintSolver::m_deltafCF
| protected

Definition at line 35 of file btNNCGConstraintSolver.h.

## ◆ m_deltafCRF

btAlignedObjectArray<btScalar> btNNCGConstraintSolver::m_deltafCRF
| protected

Definition at line 36 of file btNNCGConstraintSolver.h.

## ◆ m_deltafLengthSqrPrev

btScalar btNNCGConstraintSolver::m_deltafLengthSqrPrev
| protected

Definition at line 25 of file btNNCGConstraintSolver.h.

## ◆ m_deltafNC

btAlignedObjectArray<btScalar> btNNCGConstraintSolver::m_deltafNC
| protected

Definition at line 33 of file btNNCGConstraintSolver.h.

## ◆ m_onlyForNoneContact

bool btNNCGConstraintSolver::m_onlyForNoneContact

Definition at line 54 of file btNNCGConstraintSolver.h.

## ◆ m_pC

btAlignedObjectArray<btScalar> btNNCGConstraintSolver::m_pC
| protected

Definition at line 28 of file btNNCGConstraintSolver.h.

## ◆ m_pCF

btAlignedObjectArray<btScalar> btNNCGConstraintSolver::m_pCF
| protected

Definition at line 29 of file btNNCGConstraintSolver.h.

## ◆ m_pCRF

btAlignedObjectArray<btScalar> btNNCGConstraintSolver::m_pCRF
| protected

Definition at line 30 of file btNNCGConstraintSolver.h.

## ◆ m_pNC

btAlignedObjectArray<btScalar> btNNCGConstraintSolver::m_pNC
| protected

Definition at line 27 of file btNNCGConstraintSolver.h.

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

- btNNCGConstraintSolver.h
- btNNCGConstraintSolver.cpp