btConvexConvexAlgorithm Class Reference

Enabling USE_SEPDISTANCE_UTIL2 requires 100% reliable distance computation. More...

#include <btConvexConvexAlgorithm.h>

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

List of all members.

Classes

struct  CreateFunc

Public Member Functions

 btConvexConvexAlgorithm (btPersistentManifold *mf, const btCollisionAlgorithmConstructionInfo &ci, btCollisionObject *body0, btCollisionObject *body1, btSimplexSolverInterface *simplexSolver, btConvexPenetrationDepthSolver *pdSolver, int numPerturbationIterations, int minimumPointsPerturbationThreshold)
 cache separating vector to speedup collision detection
virtual ~btConvexConvexAlgorithm ()
virtual void processCollision (btCollisionObject *body0, btCollisionObject *body1, const btDispatcherInfo &dispatchInfo, btManifoldResult *resultOut)
virtual btScalar calculateTimeOfImpact (btCollisionObject *body0, btCollisionObject *body1, const btDispatcherInfo &dispatchInfo, btManifoldResult *resultOut)
virtual void getAllContactManifolds (btManifoldArray &manifoldArray)
void setLowLevelOfDetail (bool useLowLevel)
const btPersistentManifoldgetManifold ()

Private Attributes

btSimplexSolverInterface * m_simplexSolver
btConvexPenetrationDepthSolverm_pdSolver
bool m_ownManifold
btPersistentManifoldm_manifoldPtr
bool m_lowLevelOfDetail
int m_numPerturbationIterations
int m_minimumPointsPerturbationThreshold

Detailed Description

Enabling USE_SEPDISTANCE_UTIL2 requires 100% reliable distance computation.

However, when using large size ratios GJK can be imprecise so the distance is not conservative. In that case, enabling this USE_SEPDISTANCE_UTIL2 would result in failing/missing collisions. Either improve GJK for large size ratios (testing a 100 units versus a 0.1 unit object) or only enable the util for certain pairs that have a small size ratio The convexConvexAlgorithm collision algorithm implements time of impact, convex closest points and penetration depth calculations between two convex objects. Multiple contact points are calculated by perturbing the orientation of the smallest object orthogonal to the separating normal. This idea was described by Gino van den Bergen in this forum topic http://www.bulletphysics.com/Bullet/phpBB3/viewtopic.php?f=4&t=288&p=888#p888

Definition at line 40 of file btConvexConvexAlgorithm.h.


Constructor & Destructor Documentation

btConvexConvexAlgorithm::btConvexConvexAlgorithm ( btPersistentManifold mf,
const btCollisionAlgorithmConstructionInfo ci,
btCollisionObject body0,
btCollisionObject body1,
btSimplexSolverInterface *  simplexSolver,
btConvexPenetrationDepthSolver pdSolver,
int  numPerturbationIterations,
int  minimumPointsPerturbationThreshold 
)

cache separating vector to speedup collision detection

Definition at line 191 of file btConvexConvexAlgorithm.cpp.

btConvexConvexAlgorithm::~btConvexConvexAlgorithm (  )  [virtual]

Definition at line 212 of file btConvexConvexAlgorithm.cpp.


Member Function Documentation

btScalar btConvexConvexAlgorithm::calculateTimeOfImpact ( btCollisionObject body0,
btCollisionObject body1,
const btDispatcherInfo dispatchInfo,
btManifoldResult resultOut 
) [virtual]

Rather then checking ALL pairs, only calculate TOI when motion exceeds threshold

Linear motion for one of objects needs to exceed m_ccdSquareMotionThreshold col0->m_worldTransform,

Convex0 against sphere for Convex1

Simplification, one object is simplified as a sphere

Sphere (for convex0) against Convex1

Simplification, one object is simplified as a sphere

Implements btCollisionAlgorithm.

Definition at line 480 of file btConvexConvexAlgorithm.cpp.

virtual void btConvexConvexAlgorithm::getAllContactManifolds ( btManifoldArray manifoldArray  )  [inline, virtual]

should we use m_ownManifold to avoid adding duplicates?

Implements btCollisionAlgorithm.

Definition at line 71 of file btConvexConvexAlgorithm.h.

const btPersistentManifold* btConvexConvexAlgorithm::getManifold (  )  [inline]

Definition at line 82 of file btConvexConvexAlgorithm.h.

void btConvexConvexAlgorithm::processCollision ( btCollisionObject body0,
btCollisionObject body1,
const btDispatcherInfo dispatchInfo,
btManifoldResult resultOut 
) [virtual]

Implements btCollisionAlgorithm.

Definition at line 289 of file btConvexConvexAlgorithm.cpp.

void btConvexConvexAlgorithm::setLowLevelOfDetail ( bool  useLowLevel  ) 

Definition at line 221 of file btConvexConvexAlgorithm.cpp.


Member Data Documentation

Definition at line 51 of file btConvexConvexAlgorithm.h.

Definition at line 50 of file btConvexConvexAlgorithm.h.

Definition at line 54 of file btConvexConvexAlgorithm.h.

Definition at line 53 of file btConvexConvexAlgorithm.h.

Definition at line 49 of file btConvexConvexAlgorithm.h.

Definition at line 46 of file btConvexConvexAlgorithm.h.

btSimplexSolverInterface* btConvexConvexAlgorithm::m_simplexSolver [private]

Definition at line 45 of file btConvexConvexAlgorithm.h.


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

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