2025-01-09 01:57:18 +01:00

22 lines
744 B
C++

#include "Plane.h"
Plane::Plane(const glm::mat4& transform, int axis, int direction) {
// -x, +x, -y, +y, -z, +z
glm::vec3 worldNormal = glm::vec3(0.0f);
worldNormal[axis] = 1.0f;
worldNormal *= direction;
glm::vec4 origin = transform * glm::vec4(( worldNormal * 1.5f ), 1.0f);
glm::vec3 worldU = glm::vec3(worldNormal[1], worldNormal[2], worldNormal[0]);
glm::vec3 worldV = glm::vec3(worldNormal[2], worldNormal[0], worldNormal[1]);
glm::vec3 planeNormal = transform * glm::vec4(worldNormal, 0.0f);
glm::vec3 planeU = transform * glm::vec4(worldU, 0.0f);
glm::vec3 planeV = transform * glm::vec4(worldV, 0.0f);
_transform = glm::mat4(glm::vec4(planeU, 0.0f), glm::vec4(planeV, 0.0f), glm::vec4(planeNormal, 0.0f), origin);
}