#include <cmath>
Go to the source code of this file.
|
#define | CROSS(dest, v1, v2) |
|
#define | DOT(v1, v2) (v1[0]*v2[0]+v1[1]*v2[1]+v1[2]*v2[2]) |
|
#define | SUB(dest, v1, v2) |
|
#define | SCALAR(dest, alpha, v) |
|
#define | CHECK_MIN_MAX(p1, q1, r1, p2, q2, r2) |
|
#define | TRI_TRI_3D(p1, q1, r1, p2, q2, r2, dp2, dq2, dr2) |
|
#define | CONSTRUCT_INTERSECTION(p1, q1, r1, p2, q2, r2) |
|
#define | TRI_TRI_INTER_3D(p1, q1, r1, p2, q2, r2, dp2, dq2, dr2) |
|
#define | ORIENT_2D(a, b, c) ((a[0]-c[0])*(b[1]-c[1])-(a[1]-c[1])*(b[0]-c[0])) |
|
#define | INTERSECTION_TEST_VERTEX(P1, Q1, R1, P2, Q2, R2) |
|
#define | INTERSECTION_TEST_EDGE(P1, Q1, R1, P2, Q2, R2) |
|
|
bool | OpenMEEG::tri_tri_overlap_test_3d (double p1[3], double q1[3], double r1[3], double p2[3], double q2[3], double r2[3]) |
|
bool | OpenMEEG::coplanar_tri_tri3d (double p1[3], double q1[3], double r1[3], double p2[3], double q2[3], double r2[3], double N1[3], double N2[3]) |
|
bool | OpenMEEG::tri_tri_overlap_test_2d (double p1[2], double q1[2], double r1[2], double p2[2], double q2[2], double r2[2]) |
|
bool | OpenMEEG::tri_tri_intersection_test_3d (double p1[3], double q1[3], double r1[3], double p2[3], double q2[3], double r2[3], int *coplanar, double source[3], double target[3]) |
|
double | OpenMEEG::triangle_area (double p[3], double q[3], double r[3]) |
|
bool | OpenMEEG::ccw_tri_tri_intersection_2d (double p1[2], double q1[2], double r1[2], double p2[2], double q2[2], double r2[2]) |
|
◆ CROSS
#define CROSS |
( |
|
dest, |
|
|
|
v1, |
|
|
|
v2 |
|
) |
| |
Value: dest[0]=v1[1]*v2[2]-v1[2]*v2[1]; \
dest[1]=v1[2]*v2[0]-v1[0]*v2[2]; \
dest[2]=v1[0]*v2[1]-v1[1]*v2[0];
Definition at line 80 of file Triangle_triangle_intersection.h.
◆ DOT
#define DOT |
( |
|
v1, |
|
|
|
v2 |
|
) |
| (v1[0]*v2[0]+v1[1]*v2[1]+v1[2]*v2[2]) |
◆ SUB
#define SUB |
( |
|
dest, |
|
|
|
v1, |
|
|
|
v2 |
|
) |
| |
◆ SCALAR
#define SCALAR |
( |
|
dest, |
|
|
|
alpha, |
|
|
|
v |
|
) |
| |
◆ CHECK_MIN_MAX
#define CHECK_MIN_MAX |
( |
|
p1, |
|
|
|
q1, |
|
|
|
r1, |
|
|
|
p2, |
|
|
|
q2, |
|
|
|
r2 |
|
) |
| |
Value: {\
SUB(v1,p2,q1)\
SUB(v2,p1,q1)\
CROSS(N1,v1,v2)\
SUB(v1,q2,q1)\
if (
DOT(v1,N1) > 0.0f) return 0;\
if (
DOT(v1,N1) > 0.0f) return 0;\
else return 1; }
#define SUB(dest, v1, v2)
#define CROSS(dest, v1, v2)
Definition at line 103 of file Triangle_triangle_intersection.h.
◆ TRI_TRI_3D
#define TRI_TRI_3D |
( |
|
p1, |
|
|
|
q1, |
|
|
|
r1, |
|
|
|
p2, |
|
|
|
q2, |
|
|
|
r2, |
|
|
|
dp2, |
|
|
|
dq2, |
|
|
|
dr2 |
|
) |
| |
Value: { \
if (dp2 > 0.0f) { \
else if (dp2 < 0.0f) { \
} else { \
if (dq2 < 0.0f) { \
} \
else if (dq2 > 0.0f) { \
} \
else { \
else return coplanar_tri_tri3d(p1,q1,r1,p2,q2,r2,N1,N2);\
}}}
#define CHECK_MIN_MAX(p1, q1, r1, p2, q2, r2)
Definition at line 119 of file Triangle_triangle_intersection.h.
◆ CONSTRUCT_INTERSECTION
#define CONSTRUCT_INTERSECTION |
( |
|
p1, |
|
|
|
q1, |
|
|
|
r1, |
|
|
|
p2, |
|
|
|
q2, |
|
|
|
r2 |
|
) |
| |
◆ TRI_TRI_INTER_3D
#define TRI_TRI_INTER_3D |
( |
|
p1, |
|
|
|
q1, |
|
|
|
r1, |
|
|
|
p2, |
|
|
|
q2, |
|
|
|
r2, |
|
|
|
dp2, |
|
|
|
dq2, |
|
|
|
dr2 |
|
) |
| |
Value: { \
if (dp2 > 0.0f) { \
else if (dp2 < 0.0f) { \
} else { \
if (dq2 < 0.0f) { \
} \
else if (dq2 > 0.0f) { \
} \
else { \
else { \
*coplanar = 1; \
return coplanar_tri_tri3d(p1,q1,r1,p2,q2,r2,N1,N2);\
} \
}} }
#define CONSTRUCT_INTERSECTION(p1, q1, r1, p2, q2, r2)
Definition at line 354 of file Triangle_triangle_intersection.h.
◆ ORIENT_2D
#define ORIENT_2D |
( |
|
a, |
|
|
|
b, |
|
|
|
c |
|
) |
| ((a[0]-c[0])*(b[1]-c[1])-(a[1]-c[1])*(b[0]-c[0])) |
◆ INTERSECTION_TEST_VERTEX
#define INTERSECTION_TEST_VERTEX |
( |
|
P1, |
|
|
|
Q1, |
|
|
|
R1, |
|
|
|
P2, |
|
|
|
Q2, |
|
|
|
R2 |
|
) |
| |
Value: {\
else return 0;} else {\
else return 0;\
else return 0;}\
else \
else return 0;\
else return 0;\
else return 0;\
else\
else return 0;\
else \
else return 0; }\
else return 0; \
else return 0; \
}
#define ORIENT_2D(a, b, c)
Definition at line 471 of file Triangle_triangle_intersection.h.
◆ INTERSECTION_TEST_EDGE
#define INTERSECTION_TEST_EDGE |
( |
|
P1, |
|
|
|
Q1, |
|
|
|
R1, |
|
|
|
P2, |
|
|
|
Q2, |
|
|
|
R2 |
|
) |
| |
Value: { \
else return 0;} else { \
if (
ORIENT_2D(R1,P1,P2) >= 0.0f) return 1; else return 0;} \
else return 0; } \
} else {\
else {\
if (
ORIENT_2D(Q1,R1,R2) >= 0.0f) return 1; else return 0;}}\
else return 0; }\
else return 0; }}
Definition at line 501 of file Triangle_triangle_intersection.h.