101 localTransA.
getOrigin() -= positionOffset;
102 localTransB.
getOrigin() -= positionOffset;
119 int gGjkMaxIter = 1000;
122 bool isValid =
false;
123 bool checkSimplex =
false;
124 bool checkPenetration =
true;
133 btScalar margin = marginA + marginB;
180 btScalar f0 = squaredDistance - delta;
216 btScalar previousSquaredDistance = squaredDistance;
217 squaredDistance = newCachedSeparatingAxis.
length2();
220 if (squaredDistance>previousSquaredDistance)
223 squaredDistance = previousSquaredDistance;
224 checkSimplex =
false;
233 if (previousSquaredDistance - squaredDistance <=
SIMD_EPSILON * previousSquaredDistance)
247 #if defined(DEBUG) || defined (_DEBUG)
249 printf(
"btGjkPairDetector maxIter exceeded:%i\n",
m_curIter);
250 printf(
"sepAxis=(%f,%f,%f), squaredDistance = %f, shapeTypeA=%i,shapeTypeB=%i\n",
298 distance = ((
btScalar(1.)/rlen) - margin);
308 bool catchDegeneratePenetrationCase =
312 if (checkPenetration && (!isValid || catchDegeneratePenetrationCase ))
328 localTransA,localTransB,
336 btVector3 tmpNormalInB = tmpPointOnB-tmpPointOnA;
346 tmpNormalInB /=
btSqrt(lenSqr);
350 if (!isValid || (distance2 < distance))
352 distance = distance2;
353 pointOnA = tmpPointOnA;
354 pointOnB = tmpPointOnB;
355 normalInB = tmpNormalInB;
381 if (!isValid || (distance2 < distance))
383 distance = distance2;
384 pointOnA = tmpPointOnA;
385 pointOnB = tmpPointOnB;
431 d1 = (-normalInB).
dot(w);
445 d0 = normalInB.
dot(w);
456 pointOnB+positionOffset,