38 #ifndef FCL_NARROWPHASE_DETAIL_INTERSECT_H
39 #define FCL_NARROWPHASE_DETAIL_INTERSECT_H
65 S* collision_time,
Vector3<S>* p_i,
bool useNewton =
true);
73 S* collision_time,
Vector3<S>* p_i,
bool useNewton =
true);
78 S* collision_time,
Vector3<S>* p_i,
bool useNewton =
true);
83 S* collision_time,
Vector3<S>* p_i,
bool useNewton =
true);
91 static bool intersect_Triangle(
99 unsigned int* num_contact_points =
nullptr,
100 S* penetration_depth =
nullptr,
104 static bool intersect_Triangle_ODE_style(
112 unsigned int* num_contact_points =
nullptr,
113 S* penetration_depth =
nullptr,
116 static bool intersect_Triangle(
126 unsigned int* num_contact_points =
nullptr,
127 S* penetration_depth =
nullptr,
130 static bool intersect_Triangle(
139 unsigned int* num_contact_points =
nullptr,
140 S* penetration_depth =
nullptr,
151 static bool isZero(S v);
156 S& l, S&
r,
bool bVF, S coeffs[],
Vector3<S>* data =
nullptr);
188 static bool solveSquare(S a, S b, S c,
195 static bool solveSquare(S a, S b, S c,
204 S* a, S* b, S* c, S* d);
209 S* a, S* b, S* c, S* d);
231 Vector3<S> clipped_points[],
unsigned int* num_clipped_points,
bool clip_triangle =
false);
240 static void computeDeepestPoints(
Vector3<S>* clipped_points,
unsigned int num_clipped_points,
const Vector3<S>& n, S t, S* penetration_depth,
Vector3<S>* deepest_points,
unsigned int* num_deepest_points);
243 static void clipPolygonByPlane(
Vector3<S>* polygon_points,
unsigned int num_polygon_points,
const Vector3<S>& n, S t,
Vector3<S> clipped_points[],
unsigned int* num_clipped_points);
249 static S gaussianCDF(S x);
251 static constexpr S getEpsilon();
252 static constexpr S getNearZeroThreshold();
253 static constexpr S getCcdResolution();
254 static constexpr
unsigned int getMaxTriangleClips();