Skip to content
Snippets Groups Projects
Verified Commit 8b1b3af4 authored by Josch Morgenstern's avatar Josch Morgenstern
Browse files

[#35] fix fov (converting to radians)

parent 858ad900
No related branches found
No related tags found
1 merge request!26Resolve "Kamera - Erstellung und Handling"
Pipeline #25183 passed
......@@ -25,6 +25,10 @@ namespace vkcv {
float m_pitch;
float m_yaw;
int m_fov_nsteps;
float m_fov_min;
float m_fov_max;
bool m_forward;
bool m_backward;
bool m_left;
......@@ -56,6 +60,8 @@ namespace vkcv {
float getFov() const;
void setFov(float fov);
void changeFov(double fov);
void updateRatio(float ratio);
......
......@@ -11,6 +11,10 @@ namespace vkcv {
m_pitch = 0.0;
m_yaw = 180.0;
m_fov_nsteps = 100;
m_fov_min = 10;
m_fov_max = 120;
m_forward = false;
m_backward = false;
m_left = false;
......@@ -64,6 +68,20 @@ namespace vkcv {
setPerspective( m_fov, m_ratio, m_near, m_far);
}
void Camera::changeFov(double offset){
float fov = m_fov;
float fov_range = m_fov_max - m_fov_min;
float fov_stepsize = glm::radians(fov_range)/m_fov_nsteps;
fov -= (float) offset*fov_stepsize;
if (fov < glm::radians(m_fov_min)) {
fov = glm::radians(m_fov_min);
}
if (fov > glm::radians(m_fov_max)) {
fov = glm::radians(m_fov_max);
}
setFov(fov);
}
void Camera::updateRatio( float ratio){
m_ratio = ratio;
setPerspective( m_fov, m_ratio, m_near, m_far);
......
......@@ -50,16 +50,7 @@ namespace vkcv{
}
void CameraManager::scrollCallback(double offsetX, double offsetY) {
float fov = m_camera.getFov();
fov -= (float) offsetY;
if (fov < 1.0f) {
fov = 1.0f;
}
if (fov > 45.0f) {
fov = 45.0f;
}
m_camera.setFov(fov);
m_camera.changeFov(offsetY);
}
void CameraManager::keyCallback(int key, int scancode, int action, int mods) {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment