#include <math.h>
Go to the source code of this file.
Defines | |
#define | USE_EPSILON_TEST TRUE |
#define | EPSILON 0.000001 |
#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 | SORT(a,b) |
#define | ISECT(VV0,VV1,VV2,D0,D1,D2,isect0,isect1) |
#define | COMPUTE_INTERVALS(VV0,VV1,VV2,D0,D1,D2,D0D1,D0D2,isect0,isect1) |
#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) |
Functions | |
int | coplanar_tri_tri (float N[3],float V0[3],float V1[3],float V2[3], float U0[3],float U1[3],float U2[3]) |
|
Initializer: \ if(D0D1>0.0f) \ { \ \ \ ISECT(VV2,VV0,VV1,D2,D0,D1,isect0,isect1); \ } \ else if(D0D2>0.0f) \ { \ \ ISECT(VV1,VV0,VV2,D1,D0,D2,isect0,isect1); \ } \ else if(D1*D2>0.0f || D0!=0.0f) \ { \ \ ISECT(VV0,VV1,VV2,D0,D1,D2,isect0,isect1); \ } \ else if(D1!=0.0f) \ { \ ISECT(VV1,VV0,VV2,D1,D0,D2,isect0,isect1); \ } \ else if(D2!=0.0f) \ { \ ISECT(VV2,VV0,VV1,D2,D0,D1,isect0,isect1); \ } \ else \ { \ \ return coplanar_tri_tri(N1,V0,V1,V2,U0,U1,U2); \ } |
|
Initializer: \ 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]; |
|
|
|
Initializer: \ { \ float Ax,Ay,Bx,By,Cx,Cy,e,d,f; \ Ax=V1[i0]-V0[i0]; \ Ay=V1[i1]-V0[i1]; \ \ EDGE_EDGE_TEST(V0,U0,U1); \ \ EDGE_EDGE_TEST(V0,U1,U2); \ \ EDGE_EDGE_TEST(V0,U2,U0); \ } |
|
Initializer: \ 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; \ } \ } |
|
|
|
Initializer: \ isect0=VV0+(VV1-VV0)*D0/(D0-D1); \ isect1=VV0+(VV2-VV0)*D0/(D0-D2); |
|
Initializer: \ { \ float a,b,c,d0,d1,d2; \ \ \ 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; \ } \ } |
|
Initializer: \ if(a>b) \ { \ float c; \ c=a; \ a=b; \ b=c; \ } |
|
Initializer: \ dest[0]=v1[0]-v2[0]; \ dest[1]=v1[1]-v2[1]; \ dest[2]=v1[2]-v2[2]; |
|
|
|
|