Back to index

supertuxkart  0.5+dfsg1
btGjkEpaPenetrationDepthSolver.cpp
Go to the documentation of this file.
00001 /*
00002 Bullet Continuous Collision Detection and Physics Library
00003 Copyright (c) 2003-2006 Erwin Coumans  http://continuousphysics.com/Bullet/
00004 
00005 EPA Copyright (c) Ricardo Padrela 2006
00006 
00007 This software is provided 'as-is', without any express or implied warranty.
00008 In no event will the authors be held liable for any damages arising from the use of this software.
00009 Permission is granted to anyone to use this software for any purpose, 
00010 including commercial applications, and to alter it and redistribute it freely, 
00011 subject to the following restrictions:
00012 
00013 1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.
00014 2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.
00015 3. This notice may not be removed or altered from any source distribution.
00016 */
00017 
00018 #include "BulletCollision/CollisionShapes/btConvexShape.h"
00019 #include "btGjkEpaPenetrationDepthSolver.h"
00020 #include "BulletCollision/NarrowPhaseCollision/btGjkEpa.h"
00021 
00022 bool btGjkEpaPenetrationDepthSolver::calcPenDepth( btSimplexSolverInterface& simplexSolver,
00023                                                                                const btConvexShape* pConvexA, const btConvexShape* pConvexB,
00024                                                                                const btTransform& transformA, const btTransform& transformB,
00025                                                                                btVector3& v, btPoint3& wWitnessOnA, btPoint3& wWitnessOnB,
00026                                                                                class btIDebugDraw* debugDraw, btStackAlloc* stackAlloc )
00027 {
00028 
00029        (void)debugDraw;
00030        (void)v;
00031        (void)simplexSolver;
00032 
00033        const btScalar                            radialmargin(btScalar(0.));
00034        
00035        btGjkEpaSolver::sResults    results;
00036        if(btGjkEpaSolver::Collide( pConvexA,transformA,
00037                                                         pConvexB,transformB,
00038                                                         radialmargin,stackAlloc,results))
00039               {
00040        //     debugDraw->drawLine(results.witnesses[1],results.witnesses[1]+results.normal,btVector3(255,0,0));
00041               //resultOut->addContactPoint(results.normal,results.witnesses[1],-results.depth);
00042               wWitnessOnA = results.witnesses[0];
00043               wWitnessOnB = results.witnesses[1];
00044               return true;         
00045               }
00046 
00047        return false;
00048 }
00049 
00050