aboutsummaryrefslogtreecommitdiff
path: root/src/camera/camera.cpp
diff options
context:
space:
mode:
authorDavid Doan <daviddoan@Davids-MacBook-Pro-100.local>2023-12-08 15:04:09 -0500
committerDavid Doan <daviddoan@Davids-MacBook-Pro-100.local>2023-12-08 15:04:09 -0500
commita44bcf18656062785c89e8fde25c232431b0d585 (patch)
tree5bcc3c702eb4568353c614c9b0c5d48fdbb8f223 /src/camera/camera.cpp
parente82bbe93fbca3fdb3d77e33bfc0b7c957fbe2f87 (diff)
camera movement
Diffstat (limited to 'src/camera/camera.cpp')
-rw-r--r--src/camera/camera.cpp31
1 files changed, 5 insertions, 26 deletions
diff --git a/src/camera/camera.cpp b/src/camera/camera.cpp
index 62e8021..b63164b 100644
--- a/src/camera/camera.cpp
+++ b/src/camera/camera.cpp
@@ -1,5 +1,6 @@
#include <stdexcept>
#include "camera.h"
+#include "4dvecops/vec4ops.h"
Camera::Camera(SceneCameraData cameraData) :
m_pos(cameraData.pos),
@@ -7,33 +8,11 @@ Camera::Camera(SceneCameraData cameraData) :
m_focalLength(cameraData.focalLength),
m_aperture(cameraData.aperture)
{
- // VIEW MATRIX INTIALIZATION
- // cast to 3 for dots & cross
- glm::vec3 look3{cameraData.look.x, cameraData.look.y, cameraData.look.z};
- glm::vec3 up3{cameraData.up.x, cameraData.up.y, cameraData.up.z};
+ m_viewMatrix = Vec4Ops::getViewMatrix4(cameraData.pos, glm::vec4(0.f), cameraData.up, cameraData.look);
+ m_translationVector = glm::vec4{-cameraData.pos.x, -cameraData.pos.y, -cameraData.pos.z, -cameraData.pos.w};
- // calculate new basis
- glm::vec3 e0 = -glm::normalize(look3);
- glm::vec3 e1 = glm::normalize(up3 - glm::dot(up3, e0) * e0);
- glm::vec3 e2 = glm::cross(e1, e0);
-
- glm::mat4 alignment
- {
- e2.x, e1.x, e0.x, 0.f,
- e2.y, e1.y, e0.y, 0.f,
- e2.z, e1.z, e0.z, 0.f,
- 0.f, 0.f, 0.f, 1.f
- };
- glm::mat4 translation
- {
- 1.f, 0.f, 0.f, 0.f,
- 0.f, 1.f, 0.f, 0.f,
- 0.f, 0.f, 1.f, 0.f,
- -cameraData.pos.x, -cameraData.pos.y, -cameraData.pos.z, 1.f
- };
-
- m_viewMatrix = alignment * translation;
- m_inverse = glm::inverse(m_viewMatrix);
+ m_inverseViewMatrix = glm::inverse(m_viewMatrix);
+ m_inverseTranslationVector = -m_translationVector;
}