#pragma once #include "config/types.h" #include #include class Ray; class GeometricPlane { public: struct DistAndPosition { float dist; Position3D position; }; enum class PlaneRelation { Above, Below, On }; Position3D origin; Normal3D normal; [[nodiscard]] PlaneRelation getRelation(Position3D point) const; [[nodiscard]] std::optional getRayIntersectPosition(const Ray &) const; static bool isIntersect(PlaneRelation a, PlaneRelation b); };