]> Dogcows Code - chaz/yoink/blobdiff - src/Moof/Plane.hh
the massive refactoring effort
[chaz/yoink] / src / Moof / Plane.hh
diff --git a/src/Moof/Plane.hh b/src/Moof/Plane.hh
deleted file mode 100644 (file)
index 108c49f..0000000
+++ /dev/null
@@ -1,120 +0,0 @@
-
-/*]  Copyright (c) 2009-2010, Charles McGarvey  [**************************
-**]  All rights reserved.
-*
-* vi:ts=4 sw=4 tw=75
-*
-* Distributable under the terms and conditions of the 2-clause BSD license;
-* see the file COPYING for a complete text of the license.
-*
-**************************************************************************/
-
-#ifndef _MOOF_PLANE_HH_
-#define _MOOF_PLANE_HH_
-
-#include <Moof/Math.hh>
-#include <Moof/Shape.hh>
-
-
-namespace Mf {
-
-
-template <int D> class Aabb;
-template <int D> class Sphere;
-
-
-/*
- * A plane in 3-space defined by the equation Ax + By + Cz = D, where [A,
- * B, C] is normal to the plane.
- */
-
-struct Plane : public Shape<3>
-{
-       Vector3 normal;
-       Scalar  d;
-
-       typedef enum
-       {
-               NEGATIVE        = -1,
-               INTERSECT       =  0,
-               POSITIVE        =  1
-       } Halfspace;
-
-       Plane() {}
-       Plane(const Vector3& vector, Scalar scalar) :
-               normal(vector),
-               d(scalar) {}
-       Plane(Scalar a, Scalar b, Scalar c, Scalar scalar) :
-               normal(a, b, c),
-               d(scalar) {}
-
-
-       bool intersectRay(const Ray<3>& ray, Ray<3>::Contact& hit)
-       {
-               // solve: [(ray.point + t*ray.direction) dot normal] + d = 0
-
-               Scalar denom = cml::dot(ray.direction, normal);
-
-               // check for parallel condition
-               if (denom == SCALAR(0.0))
-               {
-                       if (isEqual(cml::dot(ray.point, normal), -d))
-                       {
-                               // the ray lies on the plane
-                               hit.distance = SCALAR(0.0);
-                               hit.normal.set(0.0, 0.0, 0.0);
-                               return true;
-                       }
-
-                       // no solution
-                       return false;
-               }
-
-               Scalar numer = cml::dot(ray.point, normal) + d;
-               hit.distance = -numer / denom;
-               if (hit.distance < SCALAR(0.0)) return false;
-
-               if (numer >= 0.0) hit.normal = normal;
-               else              hit.normal = -normal;
-               return true;
-       }
-
-
-       /* Causes the normal of the plane to become normalized.  The scalar may
-        * also be changed to keep the equation true.  Word to the wise: don't
-        * normalize a plane if the normal is the zero vector.
-        */
-       void normalize()
-       {
-               Scalar mag = normal.length();
-
-               normal /= mag;
-               d /= mag;
-       }
-
-       /**
-        * Determine the shortest distance between a point and the plane.
-        */
-       Scalar getDistanceToPoint(const Vector3& point) const
-       {
-               return cml::dot(point, normal) + d;
-       }
-
-       Halfspace intersects(const Vector3& point) const
-       {
-               Scalar distance = getDistanceToPoint(point);
-
-               if (isEqual(distance, 0.0)) return INTERSECT;
-               else if (distance < 0.0)    return NEGATIVE;
-               else                        return POSITIVE;
-       }
-
-       Halfspace intersects(const Aabb<3>& aabb) const;
-       Halfspace intersects(const Sphere<3>& sphere) const;
-};
-
-
-} // namespace Mf
-
-#endif // _MOOF_PLANE_HH_
-
This page took 0.018033 seconds and 4 git commands to generate.