#pragma once #include class Plane { private: glm::mat4 _transform; public: Plane() : _transform(1.0f) { } Plane(const glm::mat4& transform, int axis, int direction); const glm::mat4& Transform() { return _transform; } glm::vec4 Origin() { return _transform * glm::vec4(0.0f, 0.0f, 0.0f, 1.0f); } glm::vec3 Normal() { return _transform * glm::vec4(0.0f, 0.0f, 1.0f, 0.0f); } glm::vec3 U() { return _transform * glm::vec4(1.0f, 0.0f, 0.0f, 0.0f); } glm::vec3 V() { return _transform * glm::vec4(0.0f, 1.0f, 0.0f, 0.0f); } };