25#define CROSS(dest,v1,v2) \
26 dest[0]=v1[1]*v2[2]-v1[2]*v2[1]; \
27 dest[1]=v1[2]*v2[0]-v1[0]*v2[2]; \
28 dest[2]=v1[0]*v2[1]-v1[1]*v2[0];
30#define DOT(v1,v2) (v1[0]*v2[0]+v1[1]*v2[1]+v1[2]*v2[2])
32#define SUB(dest,v1,v2) \
33 dest[0]=v1[0]-v2[0]; \
34 dest[1]=v1[1]-v2[1]; \
37#define FINDMINMAX(x0,x1,x2,min,max) \
70#define AXISTEST_X01(a, b, fa, fb) \
71 p0 = a*v0[Y] - b*v0[Z]; \
72 p2 = a*v2[Y] - b*v2[Z]; \
73 if(p0<p2) {min=p0; max=p2;} else {min=p2; max=p0;} \
74 rad = fa * boxhalfsize[Y] + fb * boxhalfsize[Z]; \
75 if(min>rad || max<-rad) return 0;
77#define AXISTEST_X2(a, b, fa, fb) \
78 p0 = a*v0[Y] - b*v0[Z]; \
79 p1 = a*v1[Y] - b*v1[Z]; \
80 if(p0<p1) {min=p0; max=p1;} else {min=p1; max=p0;} \
81 rad = fa * boxhalfsize[Y] + fb * boxhalfsize[Z]; \
82 if(min>rad || max<-rad) return 0;
85#define AXISTEST_Y02(a, b, fa, fb) \
86 p0 = -a*v0[X] + b*v0[Z]; \
87 p2 = -a*v2[X] + b*v2[Z]; \
88 if(p0<p2) {min=p0; max=p2;} else {min=p2; max=p0;} \
89 rad = fa * boxhalfsize[X] + fb * boxhalfsize[Z]; \
90 if(min>rad || max<-rad) return 0;
92#define AXISTEST_Y1(a, b, fa, fb) \
93 p0 = -a*v0[X] + b*v0[Z]; \
94 p1 = -a*v1[X] + b*v1[Z]; \
95 if(p0<p1) {min=p0; max=p1;} else {min=p1; max=p0;} \
96 rad = fa * boxhalfsize[X] + fb * boxhalfsize[Z]; \
97 if(min>rad || max<-rad) return 0;
101#define AXISTEST_Z12(a, b, fa, fb) \
102 p1 = a*v1[X] - b*v1[Y]; \
103 p2 = a*v2[X] - b*v2[Y]; \
104 if(p2<p1) {min=p2; max=p1;} else {min=p1; max=p2;} \
105 rad = fa * boxhalfsize[X] + fb * boxhalfsize[Y]; \
106 if(min>rad || max<-rad) return 0;
108#define AXISTEST_Z0(a, b, fa, fb) \
109 p0 = a*v0[X] - b*v0[Y]; \
110 p1 = a*v1[X] - b*v1[Y]; \
111 if(p0<p1) {min=p0; max=p1;} else {min=p1; max=p0;} \
112 rad = fa * boxhalfsize[X] + fb * boxhalfsize[Y]; \
113 if(min>rad || max<-rad) return 0;
228 double dx =
p2->x -
p1->x;
232 double a = (
p2->y -
p1->y) /
dx;
vector q[]
The primitive variables are the momentum , pressure , density , (face) specific volume ,...
#define dx(s)
We first define some useful macros, following the notations in Bonneton et al, 2011.
int triBoxOverlap(float boxcenter[3], float boxhalfsize[3], float triverts[3][3])
#define AXISTEST_Y02(a, b, fa, fb)
#define SUB(dest, v1, v2)
#define CROSS(dest, v1, v2)
#define FINDMINMAX(x0, x1, x2, min, max)
#define AXISTEST_Z12(a, b, fa, fb)
bool segBoxOverlap(coord *min, coord *max, coord *p1, coord *p2)
#define AXISTEST_Y1(a, b, fa, fb)
#define AXISTEST_X2(a, b, fa, fb)
#define AXISTEST_X01(a, b, fa, fb)
int planeBoxOverlap(float normal[3], float vert[3], float maxbox[3])
#define AXISTEST_Z0(a, b, fa, fb)