22 lines
744 B
C++
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);
|
|
}
|