22 #define NUM_UNITSPHERE_POINTS 42
41 btIntermediateResult():m_hasResult(
false)
50 virtual void setShapeIdentifiersA(
int partId0,
int index0)
55 virtual void setShapeIdentifiersB(
int partId1,
int index1)
62 m_normalOnBInWorld = normalOnBInWorld;
63 m_pointInWorld = pointInWorld;
73 btVector3 seperatingAxisInA,seperatingAxisInB;
77 #define USE_BATCHED_SUPPORT 1
79 #ifdef USE_BATCHED_SUPPORT
89 for (i=0;i<numSampleDirections;i++)
92 seperatingAxisInABatch[i] = (-
norm) * transA.
getBasis() ;
93 seperatingAxisInBBatch[i] = norm * transB.
getBasis() ;
100 for (
int i=0;i<numPDA;i++)
106 seperatingAxisInABatch[numSampleDirections] = (-
norm) * transA.
getBasis();
107 seperatingAxisInBBatch[numSampleDirections] = norm * transB.
getBasis();
108 numSampleDirections++;
117 for (
int i=0;i<numPDB;i++)
123 seperatingAxisInABatch[numSampleDirections] = (-
norm) * transA.
getBasis();
124 seperatingAxisInBBatch[numSampleDirections] = norm * transB.
getBasis();
125 numSampleDirections++;
136 for (i=0;i<numSampleDirections;i++)
146 seperatingAxisInA = seperatingAxisInABatch[i];
147 seperatingAxisInB = seperatingAxisInBBatch[i];
149 pInA = supportVerticesABatch[i];
150 qInB = supportVerticesBBatch[i];
152 pWorld = transA(pInA);
153 qWorld = transB(qInB);
181 for (
int i=0;i<numPDA;i++)
187 numSampleDirections++;
196 for (
int i=0;i<numPDB;i++)
202 numSampleDirections++;
208 for (
int i=0;i<numSampleDirections;i++)
212 seperatingAxisInB = norm* transB.
getBasis();
215 pWorld = transA(pInA);
216 qWorld = transB(qInB);
228 #endif //USE_BATCHED_SUPPORT
250 debugDraw->
drawLine(minA,minB,color);
254 debugDraw->
drawLine(minA,minA+(minNorm*minProj),color);
279 btIntermediateResult res;
283 btScalar correctedMinNorm = minProj - res.m_depth;
288 minNorm*=penetration_relaxation;
294 pa = res.m_pointInWorld - minNorm * correctedMinNorm;
295 pb = res.m_pointInWorld;
308 return res.m_hasResult;