25 m_contactBreakingThreshold(contactBreakingThreshold)
50 btVector3 pointOnA = transformB*point+normalOnB*depth;
51 output.addContactPoint(normalOnA,pointOnA,depth);
54 output.addContactPoint(transformB.
getBasis()*normal,transformB*point,depth);
84 return diff.
dot(diff);
100 btScalar radiusWithThreshold = radius + contactBreakingThreshold;
102 btVector3 normal = (vertices[1]-vertices[0]).cross(vertices[2]-vertices[0]);
105 bool hasContact =
false;
112 btVector3 p1ToCentre = sphereCenter - vertices[0];
113 btScalar distanceFromPlane = p1ToCentre.
dot(normal);
115 if (distanceFromPlane <
btScalar(0.))
122 bool isInsideContactPlane = distanceFromPlane < radiusWithThreshold;
126 if (isInsideContactPlane) {
130 contactPoint = sphereCenter - normal*distanceFromPlane;
134 btScalar contactCapsuleRadiusSqr = radiusWithThreshold*radiusWithThreshold;
144 if (distanceSqr < contactCapsuleRadiusSqr) {
147 contactPoint = nearestOnEdge;
156 btVector3 contactToCentre = sphereCenter - contactPoint;
159 if (distanceSqr < radiusWithThreshold*radiusWithThreshold)
164 resultNormal = contactToCentre;
166 point = contactPoint;
167 depth = -(radius-distance);
170 resultNormal = normal;
171 point = contactPoint;
201 r1 = edge1_normal.
dot( p1_to_p );
202 r2 = edge2_normal.
dot( p2_to_p );
203 r3 = edge3_normal.
dot( p3_to_p );
204 if ( ( r1 > 0 && r2 > 0 && r3 > 0 ) ||
205 ( r1 <= 0 && r2 <= 0 && r3 <= 0 ) )