/Users/craigcornelius/Projects/SPRING Mac Release 0.2/intersection.cpp File Reference

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

Include dependency graph for intersection.cpp:

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 Documentation

#define AXISTEST_X01 ( a,
b,
fa,
fb   ) 

Value:

p0 = a*v0[Y] - b*v0[Z];                            \
        p2 = a*v2[Y] - b*v2[Z];                            \
        if(p0<p2) {min=p0; max=p2;} else {min=p2; max=p0;} \
        rad = fa * boxhalfsize[Y] + fb * boxhalfsize[Z];   \
        if(min>rad || max<-rad) return 0;

Definition at line 472 of file intersection.cpp.

#define AXISTEST_X2 ( a,
b,
fa,
fb   ) 

Value:

p0 = a*v0[Y] - b*v0[Z];                            \
        p1 = a*v1[Y] - b*v1[Z];                            \
        if(p0<p1) {min=p0; max=p1;} else {min=p1; max=p0;} \
        rad = fa * boxhalfsize[Y] + fb * boxhalfsize[Z];   \
        if(min>rad || max<-rad) return 0;

Definition at line 479 of file intersection.cpp.

#define AXISTEST_Y02 ( a,
b,
fa,
fb   ) 

Value:

p0 = -a*v0[X] + b*v0[Z];                           \
        p2 = -a*v2[X] + b*v2[Z];                           \
        if(p0<p2) {min=p0; max=p2;} else {min=p2; max=p0;} \
        rad = fa * boxhalfsize[X] + fb * boxhalfsize[Z];   \
        if(min>rad || max<-rad) return 0;

Definition at line 487 of file intersection.cpp.

#define AXISTEST_Y1 ( a,
b,
fa,
fb   ) 

Value:

p0 = -a*v0[X] + b*v0[Z];                           \
        p1 = -a*v1[X] + b*v1[Z];                           \
        if(p0<p1) {min=p0; max=p1;} else {min=p1; max=p0;} \
        rad = fa * boxhalfsize[X] + fb * boxhalfsize[Z];   \
        if(min>rad || max<-rad) return 0;

Definition at line 494 of file intersection.cpp.

#define AXISTEST_Z0 ( a,
b,
fa,
fb   ) 

Value:

p0 = a*v0[X] - b*v0[Y];                            \
        p1 = a*v1[X] - b*v1[Y];                            \
        if(p0<p1) {min=p0; max=p1;} else {min=p1; max=p0;} \
        rad = fa * boxhalfsize[X] + fb * boxhalfsize[Y];   \
        if(min>rad || max<-rad) return 0;

Definition at line 510 of file intersection.cpp.

#define AXISTEST_Z12 ( a,
b,
fa,
fb   ) 

Value:

p1 = a*v1[X] - b*v1[Y];                            \
        p2 = a*v2[X] - b*v2[Y];                            \
        if(p2<p1) {min=p2; max=p1;} else {min=p1; max=p2;} \
        rad = fa * boxhalfsize[X] + fb * boxhalfsize[Y];   \
        if(min>rad || max<-rad) return 0;

Definition at line 503 of file intersection.cpp.

#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 (  )     (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,
 ) 

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.


Generated on Thu Aug 30 11:03:38 2007 for SPRING Mac by  doxygen 1.5.3