aboutsummaryrefslogtreecommitdiff
path: root/dep/g3dlite/G3D/Intersect.h
diff options
context:
space:
mode:
Diffstat (limited to 'dep/g3dlite/G3D/Intersect.h')
-rw-r--r--dep/g3dlite/G3D/Intersect.h55
1 files changed, 55 insertions, 0 deletions
diff --git a/dep/g3dlite/G3D/Intersect.h b/dep/g3dlite/G3D/Intersect.h
new file mode 100644
index 00000000000..4a3c8fb4540
--- /dev/null
+++ b/dep/g3dlite/G3D/Intersect.h
@@ -0,0 +1,55 @@
+/**
+ @file Intersect.h
+
+ @maintainer Morgan McGuire, http://graphics.cs.williams.edu
+
+ @created 2009-06-29
+ @edited 2009-06-29
+
+ Copyright 2000-2009, Morgan McGuire.
+ All rights reserved.
+
+ From the G3D Innovation Engine
+ http://g3d.sf.net
+ */
+#ifndef G3D_Intersect
+#define G3D_Intersect
+
+#include "G3D/platform.h"
+#include "G3D/Ray.h"
+#include "G3D/AABox.h"
+
+namespace G3D {
+
+/**
+ @beta
+ */
+class Intersect {
+public:
+
+ /** \brief Returns true if the intersection of the ray and the solid box is non-empty.
+
+ \cite "Fast Ray / Axis-Aligned Bounding Box Overlap Tests using Ray Slopes"
+ by Martin Eisemann, Thorsten Grosch, Stefan Müller and Marcus Magnor
+ Computer Graphics Lab, TU Braunschweig, Germany and
+ University of Koblenz-Landau, Germany
+ */
+ static bool __fastcall rayAABox(const Ray& ray, const AABox& box);
+
+ /** \brief Returns true if the intersection of the ray and the solid box is non-empty.
+
+ \param time If there is an intersection, set to the time to that intersection. If the ray origin is inside the box,
+ this is a negative value indicating the distance backwards from the ray origin to the first intersection.
+ \a time is not set if there is no intersection.
+
+ \cite Slope-Mul method from "Fast Ray / Axis-Aligned Bounding Box Overlap Tests using Ray Slopes"
+ by Martin Eisemann, Thorsten Grosch, Stefan Müller and Marcus Magnor
+ Computer Graphics Lab, TU Braunschweig, Germany and
+ University of Koblenz-Landau, Germany
+ */
+ static bool __fastcall rayAABox(const Ray& ray, const AABox& box, float& time);
+};
+
+}
+
+#endif