open_iA  2019.12
A tool for the visual analysis and processing of volumetric datasets, with a focus on industrial computed tomography.
Macros | Functions | Variables
iAScene.cpp File Reference
#include "../include/iABSPTree.h"
#include "../include/iADreamCasterCommon.h"
#include "../include/iARayTracer.h"
#include "../include/iAScene.h"
#include "../include/iASTLLoader.h"
Include dependency graph for iAScene.cpp:

Macros

#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 FINDMINMAX(x0, x1, x2, min, max)   min = max = x0; if(x1<min) min=x1; if(x1>max) max=x1; if(x2<min) min=x2; if(x2>max) max=x2;
 
#define ku   modulo[m_WaldTri.k + 1]
 
#define kv   modulo[m_WaldTri.k + 2]
 

Functions

int IntersectCyl (const iARay &ray, const iAaabb &box, float &, float &, int)
 Ray-Axis-oriented-cylinder intersection routine. More...
 
bool PlaneBoxOverlap (iAVec3f &a_Normal, iAVec3f &a_Vert, iAVec3f &a_MaxBox)
 

Variables

unsigned int modulo [] = { 0, 1, 2, 0, 1 }
 

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 * a_BoxHalfsize.y() + fb * a_BoxHalfsize.z(); \
if (min > rad || max < -rad) return 0;

◆ 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 * a_BoxHalfsize.y() + fb * a_BoxHalfsize.z(); \
if(min>rad || max<-rad) return 0;

◆ 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 * a_BoxHalfsize.x() + fb * a_BoxHalfsize.z(); \
if (min > rad || max < -rad) return 0;

◆ 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 * a_BoxHalfsize.x() + fb * a_BoxHalfsize.z(); \
if (min > rad || max < -rad) return 0;

◆ 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 * a_BoxHalfsize.x() + fb * a_BoxHalfsize.y(); \
if (min > rad || max < -rad) return 0;

◆ 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 * a_BoxHalfsize.x() + fb * a_BoxHalfsize.y(); \
if (min > rad || max < -rad) return 0;

◆ FINDMINMAX

#define FINDMINMAX (   x0,
  x1,
  x2,
  min,
  max 
)    min = max = x0; if(x1<min) min=x1; if(x1>max) max=x1; if(x2<min) min=x2; if(x2>max) max=x2;

◆ ku

#define ku   modulo[m_WaldTri.k + 1]

◆ kv

#define kv   modulo[m_WaldTri.k + 2]

Function Documentation

◆ IntersectCyl()

int IntersectCyl ( const iARay ray,
const iAaabb box,
float &  tmin,
float &  tmax,
int  ind 
)

Ray-Axis-oriented-cylinder intersection routine.

Parameters
rayray class.
boxaxis aligned bounding box structure.
tminparent AABB min t.
tmaxparent AABB max t.
indcylinder axis index.
Returns
1 - if ray intersects AABB 0 - otherwise

◆ PlaneBoxOverlap()

bool PlaneBoxOverlap ( iAVec3f a_Normal,
iAVec3f a_Vert,
iAVec3f a_MaxBox 
)

Variable Documentation

◆ modulo

unsigned int modulo[] = { 0, 1, 2, 0, 1 }