Replace all hardcoded 1e30(f) by BT_LARGE_FLOAT, defined in btScalar.h as 1e18(f) so that its square still fits in FLT_MAX
Thanks to Ole K. for reporting! http://code.google.com/p/bullet/issues/detail?id=206
This commit is contained in:
@@ -92,7 +92,6 @@ struct ClipVertex
|
||||
#define b2Dot(a,b) (a).dot(b)
|
||||
#define b2Mul(a,b) (a)*(b)
|
||||
#define b2MulT(a,b) (a).transpose()*(b)
|
||||
#define BT_FLT_MAX 1e30f
|
||||
#define b2Cross(a,b) (a).cross(b)
|
||||
#define btCrossS(a,s) btVector3(s * a.getY(), -s * a.getX(),0.f)
|
||||
|
||||
@@ -151,7 +150,7 @@ static btScalar EdgeSeparation(const btBox2dShape* poly1, const btTransform& xf1
|
||||
|
||||
// Find support vertex on poly2 for -normal.
|
||||
int index = 0;
|
||||
btScalar minDot = BT_FLT_MAX;
|
||||
btScalar minDot = BT_LARGE_FLOAT;
|
||||
|
||||
for (int i = 0; i < count2; ++i)
|
||||
{
|
||||
@@ -183,7 +182,7 @@ static btScalar FindMaxSeparation(int* edgeIndex,
|
||||
|
||||
// Find edge normal on poly1 that has the largest projection onto d.
|
||||
int edge = 0;
|
||||
btScalar maxDot = -BT_FLT_MAX;
|
||||
btScalar maxDot = -BT_LARGE_FLOAT;
|
||||
for (int i = 0; i < count1; ++i)
|
||||
{
|
||||
btScalar dot = b2Dot(normals1[i], dLocal1);
|
||||
@@ -286,7 +285,7 @@ static void FindIncidentEdge(ClipVertex c[2],
|
||||
|
||||
// Find the incident edge on poly2.
|
||||
int index = 0;
|
||||
btScalar minDot = BT_FLT_MAX;
|
||||
btScalar minDot = BT_LARGE_FLOAT;
|
||||
for (int i = 0; i < count2; ++i)
|
||||
{
|
||||
btScalar dot = b2Dot(normal1, normals2[i]);
|
||||
|
||||
@@ -217,8 +217,8 @@ void CollisionDemo::displayCallback(void) {
|
||||
}
|
||||
debugDrawer.drawTransform(input.m_transformA,10.0);
|
||||
btGjkPairDetector convexConvex(shapePtr[0],shapePtr[1],&sGjkSimplexSolver,&epaSolver);
|
||||
input.m_maximumDistanceSquared = 1e30;
|
||||
gjkOutput.m_distance = 1e30f;
|
||||
input.m_maximumDistanceSquared = BT_LARGE_FLOAT;
|
||||
gjkOutput.m_distance = BT_LARGE_FLOAT;
|
||||
convexConvex.getClosestPoints(input, gjkOutput, 0);
|
||||
|
||||
|
||||
|
||||
@@ -406,8 +406,8 @@ void ConcaveConvexcastDemo::clientMoveAndDisplay()
|
||||
|
||||
int i;
|
||||
int j;
|
||||
btVector3 aabbMin(1e30,1e30,1e30);
|
||||
btVector3 aabbMax(-1e30,-1e30,-1e30);
|
||||
btVector3 aabbMin(BT_LARGE_FLOAT,BT_LARGE_FLOAT,BT_LARGE_FLOAT);
|
||||
btVector3 aabbMax(-BT_LARGE_FLOAT,-BT_LARGE_FLOAT,-BT_LARGE_FLOAT);
|
||||
|
||||
for ( i=NUM_VERTS_X/2-3;i<NUM_VERTS_X/2+2;i++)
|
||||
{
|
||||
|
||||
@@ -340,8 +340,8 @@ void ConcaveDemo::clientMoveAndDisplay()
|
||||
|
||||
int i;
|
||||
int j;
|
||||
btVector3 aabbMin(1e30,1e30,1e30);
|
||||
btVector3 aabbMax(-1e30,-1e30,-1e30);
|
||||
btVector3 aabbMin(BT_LARGE_FLOAT,BT_LARGE_FLOAT,BT_LARGE_FLOAT);
|
||||
btVector3 aabbMax(-BT_LARGE_FLOAT,-BT_LARGE_FLOAT,-BT_LARGE_FLOAT);
|
||||
|
||||
for ( i=NUM_VERTS_X/2-3;i<NUM_VERTS_X/2+2;i++)
|
||||
{
|
||||
|
||||
@@ -83,7 +83,7 @@ float steeringIncrement = 0.04f;
|
||||
float steeringClamp = 0.3f;
|
||||
float wheelRadius = 0.5f;
|
||||
float wheelWidth = 0.4f;
|
||||
float wheelFriction = 1000;//1e30f;
|
||||
float wheelFriction = 1000;//BT_LARGE_FLOAT;
|
||||
float suspensionStiffness = 20.f;
|
||||
float suspensionDamping = 2.3f;
|
||||
float suspensionCompression = 4.4f;
|
||||
|
||||
@@ -487,8 +487,8 @@ if (shape->getShapeType() == CONVEX_TRIANGLEMESH_SHAPE_PROXYTYPE)
|
||||
btConvexTriangleMeshShape* convexMesh = (btConvexTriangleMeshShape*) shape;
|
||||
|
||||
//todo: pass camera for some culling
|
||||
btVector3 aabbMax(btScalar(1e30),btScalar(1e30),btScalar(1e30));
|
||||
btVector3 aabbMin(-btScalar(1e30),-btScalar(1e30),-btScalar(1e30));
|
||||
btVector3 aabbMax(btScalar(BT_LARGE_FLOAT),btScalar(BT_LARGE_FLOAT),btScalar(BT_LARGE_FLOAT));
|
||||
btVector3 aabbMin(-btScalar(BT_LARGE_FLOAT),-btScalar(BT_LARGE_FLOAT),-btScalar(BT_LARGE_FLOAT));
|
||||
TriangleGlDrawcallback drawCallback;
|
||||
convexMesh->getMeshInterface()->InternalProcessAllTriangles(&drawCallback,aabbMin,aabbMax);
|
||||
|
||||
|
||||
@@ -275,8 +275,8 @@ void MultiMaterialDemo::clientMoveAndDisplay()
|
||||
|
||||
int i;
|
||||
int j;
|
||||
btVector3 aabbMin(1e30,1e30,1e30);
|
||||
btVector3 aabbMax(-1e30,-1e30,-1e30);
|
||||
btVector3 aabbMin(BT_LARGE_FLOAT,BT_LARGE_FLOAT,BT_LARGE_FLOAT);
|
||||
btVector3 aabbMax(-BT_LARGE_FLOAT,-BT_LARGE_FLOAT,-BT_LARGE_FLOAT);
|
||||
|
||||
for ( i=NUM_VERTS_X/2-3;i<NUM_VERTS_X/2+2;i++)
|
||||
{
|
||||
|
||||
@@ -1098,8 +1098,8 @@ void DemoApplication::renderscene(int pass)
|
||||
btVector3 aabbMin,aabbMax;
|
||||
m_dynamicsWorld->getBroadphase()->getBroadphaseAabb(aabbMin,aabbMax);
|
||||
|
||||
aabbMin-=btVector3(1e30,1e30,1e30);
|
||||
aabbMax+=btVector3(1e30,1e30,1e30);
|
||||
aabbMin-=btVector3(BT_LARGE_FLOAT,BT_LARGE_FLOAT,BT_LARGE_FLOAT);
|
||||
aabbMax+=btVector3(BT_LARGE_FLOAT,BT_LARGE_FLOAT,BT_LARGE_FLOAT);
|
||||
// printf("aabbMin=(%f,%f,%f)\n",aabbMin.getX(),aabbMin.getY(),aabbMin.getZ());
|
||||
// printf("aabbMax=(%f,%f,%f)\n",aabbMax.getX(),aabbMax.getY(),aabbMax.getZ());
|
||||
// m_dynamicsWorld->getDebugDrawer()->drawAabb(aabbMin,aabbMax,btVector3(1,1,1));
|
||||
|
||||
@@ -149,8 +149,8 @@ void OGL_displaylist_clean()
|
||||
|
||||
void OGL_displaylist_register_shape(btCollisionShape * shape)
|
||||
{
|
||||
btVector3 aabbMax(btScalar(1e30),btScalar(1e30),btScalar(1e30));
|
||||
btVector3 aabbMin(-btScalar(1e30),-btScalar(1e30),-btScalar(1e30));
|
||||
btVector3 aabbMax(btScalar(BT_LARGE_FLOAT),btScalar(BT_LARGE_FLOAT),btScalar(BT_LARGE_FLOAT));
|
||||
btVector3 aabbMin(-btScalar(BT_LARGE_FLOAT),-btScalar(BT_LARGE_FLOAT),-btScalar(BT_LARGE_FLOAT));
|
||||
GlDisplaylistDrawcallback drawCallback;
|
||||
TRIMESH_KEY dlist;
|
||||
|
||||
|
||||
@@ -66,7 +66,7 @@ float steeringIncrement = 0.04f;
|
||||
float steeringClamp = 0.3f;
|
||||
float wheelRadius = 0.5f;
|
||||
float wheelWidth = 0.4f;
|
||||
float wheelFriction = 1000;//1e30f;
|
||||
float wheelFriction = 1000;//BT_LARGE_FLOAT;
|
||||
float suspensionStiffness = 20.f;
|
||||
float suspensionDamping = 2.3f;
|
||||
float suspensionCompression = 4.4f;
|
||||
|
||||
Reference in New Issue
Block a user