00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 #ifndef _68DA1F85_90B7_4bb0_A705_83B4040A75C6_
00026 #define _68DA1F85_90B7_4bb0_A705_83B4040A75C6_
00027 #include "BulletCollision/CollisionShapes/btConvexShape.h"
00028
00030 struct btGjkEpaSolver2
00031 {
00032 struct sResults
00033 {
00034 enum eStatus
00035 {
00036 Separated,
00037 Penetrating,
00038 GJK_Failed,
00039 EPA_Failed
00040 } status;
00041 btVector3 witnesses[2];
00042 btVector3 normal;
00043 btScalar distance;
00044 };
00045
00046 static int StackSizeRequirement();
00047
00048 static bool Distance( const btConvexShape* shape0,const btTransform& wtrs0,
00049 const btConvexShape* shape1,const btTransform& wtrs1,
00050 const btVector3& guess,
00051 sResults& results);
00052
00053 static bool Penetration(const btConvexShape* shape0,const btTransform& wtrs0,
00054 const btConvexShape* shape1,const btTransform& wtrs1,
00055 const btVector3& guess,
00056 sResults& results,
00057 bool usemargins=true);
00058 #ifndef __SPU__
00059 static btScalar SignedDistance( const btVector3& position,
00060 btScalar margin,
00061 const btConvexShape* shape,
00062 const btTransform& wtrs,
00063 sResults& results);
00064
00065 static bool SignedDistance( const btConvexShape* shape0,const btTransform& wtrs0,
00066 const btConvexShape* shape1,const btTransform& wtrs1,
00067 const btVector3& guess,
00068 sResults& results);
00069 #endif //__SPU__
00070
00071 };
00072
00073 #endif