216 float u0 = ipoint[axis1] - (*
V[0])[axis1];
217 float v0 = ipoint[axis2] - (*
V[0])[axis2];
222 float u1 = (*
V[1])[axis1] - (*
V[0])[axis1];
223 float v1 = (*
V[1])[axis2] - (*
V[0])[axis2];
224 float u2 = (*
V[2])[axis1] - (*
V[0])[axis1];
225 float v2 = (*
V[2])[axis2] - (*
V[0])[axis2];
228 bool intersect =
false;
234 if ((beta >= 0) && (beta <= 1)) {
235 alpha = (v0 - beta * v2) / v1;
236 intersect = ((alpha >= 0) && ((alpha + beta) <= 1 +
WWMATH_EPSILON));
239 beta = (v0 * u1 - u0 * v1) / (v2 * u1 - u2 * v1);
240 if ((beta >= 0) && (beta <= 1)) {
241 alpha = (u0 - beta * u2) / u1;
242 intersect = ((alpha >= 0) && ((alpha + beta) <= 1 +
WWMATH_EPSILON));
256 for (vi=0; vi<3; vi++) {
257 if ((axis1 != vi) && (axis2 != vi)) axis3 = vi;
261 test_point[axis3] = 0.0f;
264 for (vi=0; vi<3; vi++) {
265 points[vi] = *(
V[vi]);
266 points[vi][axis3] = 0.0f;
274 for (vi=0; vi<3; vi++) {
275 edge = points[(vi+1)%3] - points[vi];
276 dp = test_point - points[vi];
279 side[vi] = (cross[axis3] > 0.0f);
282 bool my_intersect = ((side[0] == side[1]) && (side[1] == side[2]));
297 find_dominant_plane_fast(*
this, info);
303 float edge_x, edge_y, dp_x, dp_y, cross;
304 bool side0, side1, side2;
310 cross = edge_x * dp_y - edge_y * dp_x;
311 side0 = (cross >= 0.0f);
317 cross = edge_x * dp_y - edge_y * dp_x;
318 side1 = (cross >= 0.0f);
324 cross = edge_x * dp_y - edge_y * dp_x;
325 side2 = (cross >= 0.0f);
327 bool my_intersect = ((side0 == side1) && (side1 == side2));
336 find_dominant_plane(*
this,&axis1,&axis2,&axis3);
346 for (vi=0; vi<3; vi++) {
351 edge.
Set((*
V[vb])[axis1] - (*
V[va])[axis1] , (*
V[vb])[axis2] - (*
V[va])[axis2]);
352 dp.
Set(ipoint[axis1] - (*
V[va])[axis1] , ipoint[axis2] - (*
V[va])[axis2]);
353 float cross = edge.
X * dp.
Y - edge.
Y * dp.
X;
354 side[vi] = (cross >= 0.0f);
357 bool my_intersect = ((side[0] == side[1]) && (side[1] == side[2]));
bool Point_In_Triangle_2D(const Vector3 &tri_point0, const Vector3 &tri_point1, const Vector3 &tri_point2, const Vector3 &test_point, int axis_1, int axis_2, unsigned char &flags)