fixed bug in PolyhedralConvexShape supportmapping, and better description for GJK max iteration exit

This commit is contained in:
ejcoumans
2006-09-24 04:21:11 +00:00
parent f1627677df
commit 804d99e392
2 changed files with 11 additions and 6 deletions

View File

@@ -66,20 +66,25 @@ void PolyhedralConvexShape::BatchedUnitVectorGetSupportingVertexWithoutMargin(co
SimdVector3 vtx;
SimdScalar newDot;
for (int i=0;i<numVectors;i++)
{
supportVerticesOut[i][3] = -1e30f;
}
for (int j=0;j<numVectors;j++)
{
SimdScalar maxDot(-1e30f);
const SimdVector3& vec = vectors[j];
for (i=0;i<GetNumVertices();i++)
{
GetVertex(i,vtx);
newDot = vec.dot(vtx);
if (newDot > maxDot)
if (newDot > supportVerticesOut[j][3])
{
maxDot = newDot;
supportVerticesOut[i] = vtx;
//WARNING: don't swap next lines, the w component would get overwritten!
supportVerticesOut[j] = vtx;
supportVerticesOut[j][3] = newDot;
}
}
}

View File

@@ -77,7 +77,7 @@ int curIter = 0;
while (true)
{
//rare failure case, perhaps deferate shapes?
//degeneracy, this is typically due to invalid/uninitialized worldtransforms for a CollisionObject
if (curIter++ > gGjkMaxIter)
{
#if defined(DEBUG) || defined (_DEBUG)