diff options
Diffstat (limited to 'rwsdk/include/d3d8/rtintsec.h')
-rw-r--r-- | rwsdk/include/d3d8/rtintsec.h | 138 |
1 files changed, 0 insertions, 138 deletions
diff --git a/rwsdk/include/d3d8/rtintsec.h b/rwsdk/include/d3d8/rtintsec.h deleted file mode 100644 index cb482b17..00000000 --- a/rwsdk/include/d3d8/rtintsec.h +++ /dev/null @@ -1,138 +0,0 @@ -/*************************************************************************** - * * - * Module : rtintsec.h * - * * - * Purpose : Intersection tests on geometry primitives. * - * * - **************************************************************************/ - -#ifndef RTINTSEC_H -#define RTINTSEC_H - -/** - * \defgroup rtintersect RtIntersection - * \ingroup rttool - * - * Object Intersection Toolkit for RenderWare. - */ - -/**************************************************************************** - Includes - */ - -#include <rwcore.h> -#include "rtintsec.rpe" /* automatically generated header file */ - -/**************************************************************************** - Defines - */ - -#define RTINTSECEPSILON (RwReal)(1e-8) -#define RTINTSECEDGEEPS (RwReal)(1e-5) - -#define RtIntersectionLineTriangleMacro(_result, \ - _lineStart, _lineDelta, \ - _v0, _v1, _v2, \ - _distance) \ -MACRO_START \ -{ \ - RwV3d edge1, edge2, tVec, pVec, qVec; \ - RwReal det; \ - \ - /* Find vectors for two edges sharing vert0 */ \ - RwV3dSubMacro(&edge1, (_v1), (_v0)); \ - RwV3dSubMacro(&edge2, (_v2), (_v0)); \ - \ - /* Begin calculating determinant \ - * - also used to calculate U parameter */ \ - RwV3dCrossProductMacro(&pVec, (_lineDelta), &edge2); \ - \ - /* If determinant is \ - * + near zero, ray lies in plane of \ - * triangle \ - * + negative, triangle is backfacing \ - */ \ - det = RwV3dDotProductMacro(&edge1, &pVec); \ - (_result) = (det > RTINTSECEPSILON); \ - \ - if ((_result)) \ - { \ - RwReal lo, hi, u; \ - \ - /* Calculate bounds for parameters with tolerance */ \ - lo = - det*RTINTSECEDGEEPS; \ - hi = det - lo; \ - \ - /* Calculate U parameter and test bounds */ \ - RwV3dSubMacro(&tVec, (_lineStart), (_v0)); \ - u = RwV3dDotProductMacro(&tVec, &pVec); \ - (_result) = (u >= lo && u <= hi); \ - \ - if ((_result)) \ - { \ - RwReal v; \ - \ - /* Calculate V parameter and test bounds */ \ - RwV3dCrossProductMacro(&qVec, &tVec, &edge1); \ - v = RwV3dDotProductMacro((_lineDelta), &qVec); \ - (_result) = (v >= lo && (u + v) <= hi); \ - \ - if ((_result)) \ - { \ - /* Calculate t, \ - * and make sure intersection is in bounds of line */ \ - *(_distance) = RwV3dDotProductMacro(&edge2, &qVec); \ - \ - /* Within bounds of line? */ \ - (_result) = (*(_distance) >= lo && *(_distance) <= hi); \ - \ - if ((_result)) \ - { \ - *(_distance) = ((*(_distance)) / (det)); \ - } \ - } \ - } \ - } \ -} \ -MACRO_STOP - - -/**************************************************************************** - Global Types - */ - - -/* RWPUBLIC */ -/**************************************************************************** - Function prototypes - */ - -#ifdef __cplusplus -extern "C" -{ -#endif /* __cplusplus */ - -/* Line intersections */ -extern RwBool -RtIntersectionLineTriangle(RwV3d *lineStart, RwV3d *lineDelta, - RwV3d *v0, RwV3d *v1, RwV3d *v2, - RwReal *distance); - -/* Sphere intersections */ -extern RwBool -RtIntersectionSphereTriangle(RwSphere *sphere, - RwV3d *v0, RwV3d *v1, RwV3d *v2, - RwV3d *normal, - RwReal *distance); - -/* BBox intersections */ -extern RwBool -RtIntersectionBBoxTriangle(RwBBox *bbox, RwV3d *v0, RwV3d *v1, RwV3d *v2); - -#ifdef __cplusplus -} -#endif /* __cplusplus */ - -/* RWPUBLICEND */ - -#endif /* RTINTSEC_H */ |