39 m_simplexSolver->reset();
41 btVector3 linVelA, linVelB;
42 linVelA = toA.getOrigin() - fromA.getOrigin();
43 linVelB = toB.getOrigin() - fromB.getOrigin();
51 btVector3 r = (linVelA - linVelB);
54 btVector3 supVertexA = fromA(m_convexA->localGetSupportingVertex(-r * fromA.getBasis()));
55 btVector3 supVertexB = fromB(m_convexB->localGetSupportingVertex(r * fromB.getBasis()));
56 v = supVertexA - supVertexB;
57 int maxIter = result.m_subSimplexCastMaxIterations;
71 while ((dist2 > result.m_subSimplexCastEpsilon) && maxIter--)
73 supVertexA = interpolatedTransA(m_convexA->localGetSupportingVertex(-
v * interpolatedTransA.getBasis()));
74 supVertexB = interpolatedTransB(m_convexB->localGetSupportingVertex(
v * interpolatedTransB.getBasis()));
75 w = supVertexA - supVertexB;
92 lambda = lambda - VdotW / VdotR;
95 interpolatedTransA.getOrigin().setInterpolate3(fromA.getOrigin(), toA.getOrigin(), lambda);
96 interpolatedTransB.getOrigin().setInterpolate3(fromB.getOrigin(), toB.getOrigin(), lambda);
99 w = supVertexA - supVertexB;
105 if (!m_simplexSolver->inSimplex(
w))
106 m_simplexSolver->addVertex(
w, supVertexA, supVertexB);
108 if (m_simplexSolver->closest(
v))
129 result.m_fraction = lambda;
131 result.m_normal = n.normalized();
136 if (result.m_normal.dot(r) >= -result.m_allowedPenetration)
139 btVector3 hitA, hitB;
140 m_simplexSolver->compute_points(hitA, hitB);
141 result.m_hitPoint = hitB;