Project::OSiRiON - Git repositories
Project::OSiRiON
News . About . Screenshots . Downloads . Forum . Wiki . Tracker . Git
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStijn Buys <ingar@osirion.org>2008-03-02 12:23:48 +0000
committerStijn Buys <ingar@osirion.org>2008-03-02 12:23:48 +0000
commit81787e9004377016236865e95b95707ed6cf1d0b (patch)
treeb8a7bd0d51f97848ad98ec8c8f5e424de910df32 /src/math/plane3f.h
parent1d45d8ecb4633f07a0ff163255dbedc3c3a72ac8 (diff)
initial (buggy) support for .map models
Diffstat (limited to 'src/math/plane3f.h')
-rw-r--r--src/math/plane3f.h50
1 files changed, 50 insertions, 0 deletions
diff --git a/src/math/plane3f.h b/src/math/plane3f.h
new file mode 100644
index 0000000..ddaef16
--- /dev/null
+++ b/src/math/plane3f.h
@@ -0,0 +1,50 @@
+/*
+ math/plane3f.h
+ This file is part of the Osirion project and is distributed under
+ the terms of the GNU General Public License version 2
+*/
+
+#ifndef __INCLUDED_MATH_PLANE3F_H__
+#define __INCLUDED_MATH_PLANE3F_H__
+
+#include "math/vector3f.h"
+
+namespace math
+{
+
+/** @brief A class representing a plane in 3d space
+ * all points p(x, y, z) on the plane satisfy the general equation
+ * x*a() + y*b() + z*c() + d() = 0
+ */
+class Plane3f
+{
+public:
+ /// a plane defined by 3 points in space
+ Plane3f(Vector3f const & point0, Vector3f const &point1, Vector3f const &point2);
+ /// copy constructor
+ Plane3f(Plane3f const & other);
+
+ /// normal of the plane, not normalized to lenght 1
+ inline Vector3f const & normal() const { return plane_normal; }
+ /// the points defining the plane.
+ /// @param i 0 <= i < 3
+ inline Vector3f const & point(size_t i) const { return plane_point[i]; }
+
+ /// first parameter of the general equation
+ inline float a() const { return plane_normal[0]; }
+ /// second parameter of the general equation
+ inline float b() const { return plane_normal[1]; }
+ /// third param of the general equation
+ inline float c() const { return plane_normal[2]; }
+ /// fourth parameter of the general equation
+ inline float d() const { return pd; }
+
+private:
+ Vector3f plane_point[3];
+ Vector3f plane_normal;
+ float pd;
+};
+
+}
+
+#endif // __INCLUDED_MATH_PLANE3F_H__