summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/geometricPlane.cpp9
-rw-r--r--lib/geometricPlane.h12
2 files changed, 21 insertions, 0 deletions
diff --git a/lib/geometricPlane.cpp b/lib/geometricPlane.cpp
new file mode 100644
index 0000000..cb52997
--- /dev/null
+++ b/lib/geometricPlane.cpp
@@ -0,0 +1,9 @@
+#include "geometricPlane.h"
+#include <glm/geometric.hpp>
+
+GeometricPlane::PlaneRelation
+GeometricPlane::getRelation(glm::vec3 p) const
+{
+ const auto d = glm::dot(normal, p - origin);
+ return d < 0.f ? PlaneRelation::Below : d > 0.f ? PlaneRelation::Above : PlaneRelation::On;
+}
diff --git a/lib/geometricPlane.h b/lib/geometricPlane.h
new file mode 100644
index 0000000..96816f2
--- /dev/null
+++ b/lib/geometricPlane.h
@@ -0,0 +1,12 @@
+#pragma once
+
+#include <glm/vec3.hpp>
+
+class GeometricPlane {
+public:
+ enum class PlaneRelation { Above, Below, On };
+
+ glm::vec3 origin, normal;
+
+ PlaneRelation getRelation(glm::vec3 point) const;
+};