diff options
author | Fate Bussey <lafayette_bussey@brown.edu> | 2023-12-13 19:41:38 -0500 |
---|---|---|
committer | Fate Bussey <lafayette_bussey@brown.edu> | 2023-12-13 19:41:38 -0500 |
commit | 015884f1bfe701871b3227fc69598d5d83ab4f5b (patch) | |
tree | 30efd18d33a0e3dff4bb67b54f113c5f1527059e /src/camera/camera.cpp | |
parent | 5de0f3b6de57aa0cdc6b1aa7efc57836a99ee59a (diff) | |
parent | 6e27cd596611758bf82f58cff25ad6310bb5ad6e (diff) |
new cyl
Diffstat (limited to 'src/camera/camera.cpp')
-rw-r--r-- | src/camera/camera.cpp | 38 |
1 files changed, 22 insertions, 16 deletions
diff --git a/src/camera/camera.cpp b/src/camera/camera.cpp index 704be7e..69f2787 100644 --- a/src/camera/camera.cpp +++ b/src/camera/camera.cpp @@ -5,28 +5,34 @@ #include <glm/glm.hpp> #include <glm/gtc/matrix_transform.hpp> // Include this header for glm::rotate +void Camera::updateViewMatrix(SceneCameraData cameraData) { + m_viewMatrix = Vec4Ops::getViewMatrix4(cameraData.look, cameraData.up, cameraData.over); + m_viewMatrix = glm::rotate(m_viewMatrix, glm::radians(settings.xy), glm::vec3(0.f, 1.f, 0.f)); + m_viewMatrix = glm::rotate(m_viewMatrix, glm::radians(settings.yz), glm::vec3(1.f, 0.f, 0.f)); + m_viewMatrix = glm::rotate(m_viewMatrix, glm::radians(settings.xz), glm::vec3(0.f, 0.f, 1.f)); + + + // TODO: link sliders here. make them smaller changes since our objects are so small + glm::vec4 uiTranslation = glm::vec4(settings.xw, settings.yw, 0.f, settings.zw); + m_translationVector = -cameraData.pos + uiTranslation; + + m_inverseViewMatrix = glm::inverse(m_viewMatrix); + m_inverseTranslationVector = -m_translationVector; + m_controlPoints = { + {cameraData.pos[0], cameraData.pos[1], cameraData.pos[2]}, + {cameraData.pos[0], cameraData.pos[1] - 2.f, cameraData.pos[2] - 2.f}, + {cameraData.pos[0] + 2.f, cameraData.pos[1] + 2.f, cameraData.pos[2] -2.f}, + {cameraData.pos[0] + 2.f, cameraData.pos[1], cameraData.pos[2]} + }; +} + Camera::Camera(SceneCameraData cameraData) : m_pos(cameraData.pos), m_heightAngle(cameraData.heightAngle), m_focalLength(cameraData.focalLength), m_aperture(cameraData.aperture) { - m_viewMatrix = Vec4Ops::getViewMatrix4(cameraData.look, cameraData.up, cameraData.over); - // add settings.xy rotation - m_viewMatrix = glm::rotate(m_viewMatrix, glm::radians(settings.xy), glm::vec3(0.f, 1.f, 0.f)); - m_viewMatrix = glm::rotate(m_viewMatrix, glm::radians(settings.yz), glm::vec3(1.f, 0.f, 0.f)); - m_viewMatrix = glm::rotate(m_viewMatrix, glm::radians(settings.xz), glm::vec3(0.f, 0.f, 1.f)); - - m_translationVector = -cameraData.pos; - - m_inverseViewMatrix = glm::inverse(m_viewMatrix); - m_inverseTranslationVector = -m_translationVector; - m_controlPoints = { - {cameraData.pos[0], cameraData.pos[1], cameraData.pos[2]}, - {cameraData.pos[0], cameraData.pos[1] - 2.f, cameraData.pos[2] - 2.f}, - {cameraData.pos[0] + 2.f, cameraData.pos[1] + 2.f, cameraData.pos[2] -2.f}, - {cameraData.pos[0] + 2.f, cameraData.pos[1], cameraData.pos[2]} - }; + updateViewMatrix(cameraData); } glm::mat4 Camera::getViewMatrix() const { |