Basilisk CFD
Adaptive Cartesian mesh PDE framework
Loading...
Searching...
No Matches
tribox3.h File Reference
#include <math.h>
#include <stdio.h>
Include dependency graph for tribox3.h:

Go to the source code of this file.

Macros

#define X   0
 
#define Y   1
 
#define Z   2
 
#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 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)
 

Functions

int planeBoxOverlap (float normal[3], float vert[3], float maxbox[3])
 
int triBoxOverlap (float boxcenter[3], float boxhalfsize[3], float triverts[3][3])
 
bool segBoxOverlap (coord *min, coord *max, coord *p1, coord *p2)
 

Macro Definition Documentation

◆ AXISTEST_X01

#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;
const vector a
Definition all-mach.h:59
int min
Definition balance.h:192
int x
Definition common.h:76
size_t max
Definition mtrace.h:8
size *double * b
#define Z
Definition tribox3.h:23
#define Y
Definition tribox3.h:22

Definition at line 70 of file tribox3.h.

◆ AXISTEST_X2

#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 77 of file tribox3.h.

◆ AXISTEST_Y02

#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;
#define X
Definition tribox3.h:21

Definition at line 85 of file tribox3.h.

◆ AXISTEST_Y1

#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 92 of file tribox3.h.

◆ AXISTEST_Z0

#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 108 of file tribox3.h.

◆ AXISTEST_Z12

#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 101 of file tribox3.h.

◆ 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 25 of file tribox3.h.

◆ DOT

#define DOT (   v1,
  v2 
)    (v1[0]*v2[0]+v1[1]*v2[1]+v1[2]*v2[2])

Definition at line 30 of file tribox3.h.

◆ FINDMINMAX

#define FINDMINMAX (   x0,
  x1,
  x2,
  min,
  max 
)
Value:

Definition at line 37 of file tribox3.h.

◆ SUB

#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 32 of file tribox3.h.

◆ X

#define X   0

Definition at line 21 of file tribox3.h.

◆ Y

#define Y   1

Definition at line 22 of file tribox3.h.

◆ Z

#define Z   2

Definition at line 23 of file tribox3.h.

Function Documentation

◆ planeBoxOverlap()

int planeBoxOverlap ( float  normal[3],
float  vert[3],
float  maxbox[3] 
)

Definition at line 44 of file tribox3.h.

References DOT, normal, q, v, x, X, and Z.

Referenced by triBoxOverlap().

Here is the caller graph for this function:

◆ segBoxOverlap()

bool segBoxOverlap ( coord min,
coord max,
coord p1,
coord p2 
)

Definition at line 192 of file tribox3.h.

References a, b, dx, max, min, vector::x, x, vector::y, and y.

◆ triBoxOverlap()

int triBoxOverlap ( float  boxcenter[3],
float  boxhalfsize[3],
float  triverts[3][3] 
)

Definition at line 115 of file tribox3.h.

References AXISTEST_X01, AXISTEST_X2, AXISTEST_Y02, AXISTEST_Y1, AXISTEST_Z0, AXISTEST_Z12, CROSS, FINDMINMAX, max, min, normal, planeBoxOverlap(), SUB, x, X, Y, and Z.

Here is the call graph for this function: