34         int numVerts = pVtxIn.
size();
 
   41         ds = planeNormalWS.
dot(firstVertex) + planeEqWS;
 
   43         for (ve = 0; ve < numVerts; ve++)
 
   45                 endVertex = pVtxIn[ve];
 
   47                 de = planeNormalWS.
dot(endVertex) + planeEqWS;
 
   71                 firstVertex = endVertex;
 
   83         hullA.
project(transA, sep_axis, Min0, Max0, witnesPtMinA, witnesPtMaxA);
 
   84         hullB.
project(transB, sep_axis, Min1, Max1, witnesPtMinB, witnesPtMaxB);
 
   86         if (Max0 < Min1 || Max1 < Min0)
 
   96                 witnessPointA = witnesPtMaxA;
 
   97                 witnessPointB = witnesPtMinB;
 
  102                 witnessPointA = witnesPtMinA;
 
  103                 witnessPointB = witnesPtMaxB;
 
  117 #ifdef TEST_INTERNAL_OBJECTS 
  125         p[0] = sv[0] < 0.0f ? -extents[0] : extents[0];
 
  126         p[1] = sv[1] < 0.0f ? -extents[1] : extents[1];
 
  127         p[2] = sv[2] < 0.0f ? -extents[2] : extents[2];
 
  137         const btScalar x = r0.
x() * in.
x() + r1.
x() * in.
y() + r2.
x() * in.
z();
 
  138         const btScalar y = r0.
y() * in.
x() + r1.
y() * in.
y() + r2.
y() * in.
z();
 
  139         const btScalar z = r0.
z() * in.
x() + r1.
z() * in.
y() + r2.
z() * in.
z();
 
  149         InverseTransformPoint3x3(localAxis0, axis, trans0);
 
  151         InverseTransformPoint3x3(localAxis1, axis, trans1);
 
  154         BoxSupport(convex0.
m_extents, localAxis0, p0);
 
  156         BoxSupport(convex1.
m_extents, localAxis1, p1);
 
  158         const btScalar Radius0 = p0[0] * localAxis0.
x() + p0[1] * localAxis0.
y() + p0[2] * localAxis0.
z();
 
  159         const btScalar Radius1 = p1[0] * localAxis1.
x() + p1[1] * localAxis1.
y() + p1[2] * localAxis1.
z();
 
  164         const btScalar MinMaxRadius = MaxRadius + MinRadius;
 
  165         const btScalar d0 = MinMaxRadius + dp;
 
  166         const btScalar d1 = MinMaxRadius - dp;
 
  168         const btScalar depth = d0 < d1 ? d0 : d1;
 
  173 #endif  //TEST_INTERNAL_OBJECTS 
  190         btScalar denom = 1.0f - dirA_dot_dirB * dirA_dot_dirB;
 
  198                 tA = (dirA_dot_trans - dirB_dot_trans * dirA_dot_dirB) / denom;
 
  205         tB = tA * dirA_dot_dirB - dirB_dot_trans;
 
  210                 tA = tB * dirA_dot_dirB + dirA_dot_trans;
 
  220                 tA = tB * dirA_dot_dirB + dirA_dot_trans;
 
  233         ptsVector = translation - offsetA + offsetB;
 
  247         int curPlaneTests = 0;
 
  251         for (
int i = 0; i < numFacesA; i++)
 
  255                 if (DeltaC2.
dot(faceANormalWS) < 0)
 
  256                         faceANormalWS *= -1.f;
 
  259 #ifdef TEST_INTERNAL_OBJECTS 
  261                 if (
gUseInternalObject && !TestInternalObjects(transA, transB, DeltaC2, faceANormalWS, hullA, hullB, dmin))
 
  268                 if (!
TestSepAxis(hullA, hullB, transA, transB, faceANormalWS, d, wA, wB))
 
  280         for (
int i = 0; i < numFacesB; i++)
 
  284                 if (DeltaC2.
dot(WorldNormal) < 0)
 
  288 #ifdef TEST_INTERNAL_OBJECTS 
  290                 if (
gUseInternalObject && !TestInternalObjects(transA, transB, DeltaC2, WorldNormal, hullA, hullB, dmin))
 
  297                 if (!
TestSepAxis(hullA, hullB, transA, transB, WorldNormal, d, wA, wB))
 
  307         btVector3 edgeAstart, edgeAend, edgeBstart, edgeBend;
 
  312         btVector3 witnessPointA(0, 0, 0), witnessPointB(0, 0, 0);
 
  333 #ifdef TEST_INTERNAL_OBJECTS 
  351                                         worldEdgeA = WorldEdge0;
 
  352                                         worldEdgeB = WorldEdge1;
 
  360         if (edgeA >= 0 && edgeB >= 0)
 
  371                 btVector3 translation = witnessPointB - witnessPointA;
 
  388                         ptsVector *= 1.f / nl;
 
  389                         if (ptsVector.
dot(DeltaC2) < 0.f)
 
  393                         btVector3 ptOnB = witnessPointB + offsetB;
 
  399         if ((DeltaC2.
dot(sep)) < 0.0f)
 
  412         int closestFaceA = -1;
 
  415                 for (
int face = 0; face < hullA.
m_faces.
size(); face++)
 
  428         if (closestFaceA < 0)
 
  435         for (
int e0 = 0; e0 < numVerticesA; e0++)
 
  445                 btScalar planeEqWS1 = -worldA1.
dot(planeNormalWS1);
 
  449                 int otherFace = polyA.m_connectedFaces[e0];
 
  456                 btVector3 planeNormalWS = planeNormalWS1;
 
  462                 clipFace(*pVtxIn, *pVtxOut, planeNormalWS, planeEqWS);
 
  477                 for (
int i = 0; i < pVtxIn->
size(); i++)
 
  480                         btScalar depth = planeNormalWS.
dot(vtx) + planeEqWS;
 
  481                         if (depth <= minDist)
 
  487                         if (depth <= maxDist)
 
  490 #ifdef ONLY_REPORT_DEEPEST_POINT 
  496                                         printf(
"error in btPolyhedralContactClipping depth = %f\n", depth);
 
  497                                         printf(
"likely wrong separatingNormal passed in\n");
 
  505 #ifdef ONLY_REPORT_DEEPEST_POINT 
  506         if (curMaxDist < maxDist)
 
  510 #endif  //ONLY_REPORT_DEEPEST_POINT 
  520         int closestFaceB = -1;
 
  523                 for (
int face = 0; face < hullB.
m_faces.
size(); face++)
 
  539                 for (
int e0 = 0; e0 < numVertices; e0++)
 
  546         if (closestFaceB >= 0)
 
  547                 clipFaceAgainstHull(separatingNormal, hullA, transA, worldVertsB1, worldVertsB2, minDist, maxDist, resultOut);