diff options
Diffstat (limited to 'lib/geometricPlane.h')
-rw-r--r-- | lib/geometricPlane.h | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/lib/geometricPlane.h b/lib/geometricPlane.h new file mode 100644 index 0000000..dc8df50 --- /dev/null +++ b/lib/geometricPlane.h @@ -0,0 +1,22 @@ +#pragma once + +#include <glm/vec3.hpp> +#include <optional> + +class Ray; + +class GeometricPlane { +public: + struct DistAndPosition { + float dist; + glm::vec3 position; + }; + enum class PlaneRelation { Above, Below, On }; + + glm::vec3 origin, normal; + + PlaneRelation getRelation(glm::vec3 point) const; + std::optional<DistAndPosition> getRayIntersectPosition(const Ray &) const; + + static bool isIntersect(PlaneRelation a, PlaneRelation b); +}; |