Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'intern/moto/include/MT_Plane3.inl')
-rw-r--r--intern/moto/include/MT_Plane3.inl128
1 files changed, 128 insertions, 0 deletions
diff --git a/intern/moto/include/MT_Plane3.inl b/intern/moto/include/MT_Plane3.inl
new file mode 100644
index 00000000000..77db9b35e1d
--- /dev/null
+++ b/intern/moto/include/MT_Plane3.inl
@@ -0,0 +1,128 @@
+#include "MT_Optimize.h"
+
+
+GEN_INLINE
+MT_Plane3::
+MT_Plane3(
+ const MT_Vector3 &a,
+ const MT_Vector3 &b,
+ const MT_Vector3 &c
+){
+ MT_Vector3 l1 = b-a;
+ MT_Vector3 l2 = c-b;
+
+ MT_Vector3 n = l1.cross(l2);
+ n = n.safe_normalized();
+ MT_Scalar d = n.dot(a);
+
+ m_co[0] = n.x();
+ m_co[1] = n.y();
+ m_co[2] = n.z();
+ m_co[3] = -d;
+}
+
+/**
+ * Construction from vector and a point.
+ */
+GEN_INLINE
+MT_Plane3::
+MT_Plane3(
+ const MT_Vector3 &n,
+ const MT_Vector3 &p
+){
+
+ MT_Vector3 mn = n.safe_normalized();
+ MT_Scalar md = mn.dot(p);
+
+ m_co[0] = mn.x();
+ m_co[1] = mn.y();
+ m_co[2] = mn.z();
+ m_co[3] = -md;
+}
+
+
+/**
+ * Default constructor
+ */
+GEN_INLINE
+MT_Plane3::
+MT_Plane3(
+):
+ MT_Tuple4()
+{
+ m_co[0] = MT_Scalar(1);
+ m_co[1] = MT_Scalar(0);
+ m_co[2] = MT_Scalar(0);
+ m_co[3] = MT_Scalar(0);
+}
+
+/**
+ * Return plane normal
+ */
+
+GEN_INLINE
+ MT_Vector3
+MT_Plane3::
+Normal(
+) const {
+ return MT_Vector3(m_co[0],m_co[1],m_co[2]);
+}
+
+/**
+ * Return plane scalar i.e the d from n.x + d = 0
+ */
+
+GEN_INLINE
+ MT_Scalar
+MT_Plane3::
+Scalar(
+) const {
+ return m_co[3];
+}
+
+GEN_INLINE
+ void
+MT_Plane3::
+Invert(
+) {
+ m_co[0] = -m_co[0];
+ m_co[1] = -m_co[1];
+ m_co[2] = -m_co[2];
+ m_co[3] = -m_co[3];
+}
+
+
+/**
+ * Assignment operator
+ */
+
+GEN_INLINE
+ MT_Plane3 &
+MT_Plane3::
+operator = (
+ const MT_Plane3 & rhs
+) {
+ m_co[0] = rhs.m_co[0];
+ m_co[1] = rhs.m_co[1];
+ m_co[2] = rhs.m_co[2];
+ m_co[3] = rhs.m_co[3];
+ return *this;
+}
+
+/**
+ * Return the distance from a point to the plane
+ */
+
+GEN_INLINE
+ MT_Scalar
+MT_Plane3::
+signedDistance(
+ const MT_Vector3 &v
+) const {
+ return Normal().dot(v) + m_co[3];
+}
+
+
+
+
+