#include "intersection.h"#include <math.h>#include <stdio.h>#include <iostream>

Go to the source code of this file.
Defines | |
| #define | SORT(a, b) |
| #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 | FABS(x) (float(fabs(x))) |
| #define | USE_EPSILON_TEST TRUE |
| #define | EPSILON_TRI_TRI 0.000001 |
| #define | EDGE_EDGE_TEST(V0, U0, U1) |
| #define | EDGE_AGAINST_TRI_EDGES(V0, V1, U0, U1, U2) |
| #define | POINT_IN_TRI(V0, U0, U1, U2) |
| #define | NEWCOMPUTE_INTERVALS(VV0, VV1, VV2, D0, D1, D2, D0D1, D0D2, A, B, C, X0, X1) |
| #define | X 0 |
| #define | Y 1 |
| #define | Z 2 |
| #define | FINDMINMAX(x0, x1, x2, min, max) |
| #define | AXISTEST_X01(a, b, fa, fb) |
| #define | AXISTEST_X2(a, b, fa, fb) |
| #define | AXISTEST_Y02(a, b, fa, fb) |
| #define | AXISTEST_Y1(a, b, fa, fb) |
| #define | AXISTEST_Z12(a, b, fa, fb) |
| #define | AXISTEST_Z0(a, b, fa, fb) |
| #define AXISTEST_X01 | ( | a, | |||
| b, | |||||
| fa, | |||||
| fb | ) |
| #define AXISTEST_X2 | ( | a, | |||
| b, | |||||
| fa, | |||||
| fb | ) |
| #define AXISTEST_Y02 | ( | a, | |||
| b, | |||||
| fa, | |||||
| fb | ) |
| #define AXISTEST_Y1 | ( | a, | |||
| b, | |||||
| fa, | |||||
| fb | ) |
| #define AXISTEST_Z0 | ( | a, | |||
| b, | |||||
| fa, | |||||
| fb | ) |
| #define AXISTEST_Z12 | ( | a, | |||
| b, | |||||
| fa, | |||||
| fb | ) |
| #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 122 of file intersection.cpp.
| #define DOT | ( | v1, | |||
| v2 | ) | (v1[0]*v2[0]+v1[1]*v2[1]+v1[2]*v2[2]) |
Definition at line 127 of file intersection.cpp.
| #define EDGE_AGAINST_TRI_EDGES | ( | V0, | |||
| V1, | |||||
| U0, | |||||
| U1, | |||||
| U2 | ) |
Value:
{ \
float Ax,Ay,Bx,By,Cx,Cy,e,d,f; \
Ax=V1[i0]-V0[i0]; \
Ay=V1[i1]-V0[i1]; \
/* test edge U0,U1 against V0,V1 */ \
EDGE_EDGE_TEST(V0,U0,U1); \
/* test edge U1,U2 against V0,V1 */ \
EDGE_EDGE_TEST(V0,U1,U2); \
/* test edge U2,U1 against V0,V1 */ \
EDGE_EDGE_TEST(V0,U2,U0); \
}
Definition at line 186 of file intersection.cpp.
| #define EDGE_EDGE_TEST | ( | V0, | |||
| U0, | |||||
| U1 | ) |
Value:
Bx=U0[i0]-U1[i0]; \ By=U0[i1]-U1[i1]; \ Cx=V0[i0]-U0[i0]; \ Cy=V0[i1]-U0[i1]; \ f=Ay*Bx-Ax*By; \ d=By*Cx-Bx*Cy; \ if((f>0 && d>=0 && d<=f) || (f<0 && d<=0 && d>=f)) \ { \ e=Ax*Cy-Ay*Cx; \ if(f>0) \ { \ if(e>=0 && e<=f) return 1; \ } \ else \ { \ if(e<=0 && e>=f) return 1; \ } \ }
Definition at line 166 of file intersection.cpp.
| #define EPSILON_TRI_TRI 0.000001 |
Definition at line 161 of file intersection.cpp.
| #define FABS | ( | x | ) | (float(fabs(x))) |
Definition at line 154 of file intersection.cpp.
| #define FINDMINMAX | ( | x0, | |||
| x1, | |||||
| x2, | |||||
| min, | |||||
| max | ) |
Value:
min = max = x0; \ if(x1<min) min=x1;\ if(x1>max) max=x1;\ if(x2<min) min=x2;\ if(x2>max) max=x2;
Definition at line 439 of file intersection.cpp.
| #define NEWCOMPUTE_INTERVALS | ( | VV0, | |||
| VV1, | |||||
| VV2, | |||||
| D0, | |||||
| D1, | |||||
| D2, | |||||
| D0D1, | |||||
| D0D2, | |||||
| A, | |||||
| B, | |||||
| C, | |||||
| X0, | |||||
| X1 | ) |
Definition at line 275 of file intersection.cpp.
| #define POINT_IN_TRI | ( | V0, | |||
| U0, | |||||
| U1, | |||||
| U2 | ) |
Value:
{ \
float a,b,c,d0,d1,d2; \
/* is T1 completly inside T2? */ \
/* check if V0 is inside tri(U0,U1,U2) */ \
a=U1[i1]-U0[i1]; \
b=-(U1[i0]-U0[i0]); \
c=-a*U0[i0]-b*U0[i1]; \
d0=a*V0[i0]+b*V0[i1]+c; \
\
a=U2[i1]-U1[i1]; \
b=-(U2[i0]-U1[i0]); \
c=-a*U1[i0]-b*U1[i1]; \
d1=a*V0[i0]+b*V0[i1]+c; \
\
a=U0[i1]-U2[i1]; \
b=-(U0[i0]-U2[i0]); \
c=-a*U2[i0]-b*U2[i1]; \
d2=a*V0[i0]+b*V0[i1]+c; \
if(d0*d1>0.0) \
{ \
if(d0*d2>0.0) return 1; \
} \
}
Definition at line 199 of file intersection.cpp.
| #define SORT | ( | a, | |||
| b | ) |
Value:
if(a>b) \ { \ float c; \ c=a; \ a=b; \ b=c; \ }
Definition at line 112 of file intersection.cpp.
| #define SUB | ( | dest, | |||
| v1, | |||||
| v2 | ) |
Value:
{ \
dest[0]=v1[0]-v2[0]; \
dest[1]=v1[1]-v2[1]; \
dest[2]=v1[2]-v2[2];}
Definition at line 129 of file intersection.cpp.
| #define USE_EPSILON_TEST TRUE |
Definition at line 160 of file intersection.cpp.
| #define X 0 |
Definition at line 435 of file intersection.cpp.
| #define Y 1 |
Definition at line 436 of file intersection.cpp.
| #define Z 2 |
Definition at line 437 of file intersection.cpp.
1.5.3