// // Created by Иван Ильин on 19.01.2021. // #ifndef ENGINE_PLANE_H #define ENGINE_PLANE_H #include "utils/Point4D.h" #include "Triangle.h" class Plane { private: // You can define plane by defining the points in 3D space Triangle _triangle; // Or by defining normal vector and one val laying on the plane Point4D _n = Point4D{0, 0, 1, 0}; Point4D _p{}; public: // A plain with normal vector '_n' and val '_p' lays on the plane Plane() = default; Plane(const Point4D& N, const Point4D& P); Plane(const Plane& plane); explicit Plane(const Triangle& tri); [[nodiscard]] double distance(const Point4D& point4D) const; // Point4D in space where line ('start' to 'end') intersects plain with normal vector '_n' and val '_p' lays on the plane [[nodiscard]] std::pair intersection(const Point4D& start, const Point4D& end) const; int clip(Triangle& tri, Triangle& additional_tri) const; [[nodiscard]] Point4D N() const { return _n; } [[nodiscard]] Point4D P() const { return _p; } }; #endif //INC_3DZAVR_PLANE_H