Files
LivePlotter/inc/camera.hpp

25 lines
568 B
C++

#pragma once
#include <glm/matrix.hpp>
struct Viewport {
float fov_degrees;
float width;
float height;
};
Viewport make_viewport(float win_w, float win_h, float fov_degrees);
glm::mat4 camera_to_projection(Viewport& v);
struct Camera {
glm::vec3 focus;
float theta, phi, distance;
};
Camera make_camera(glm::vec3 focus, float distance);
void pan_camera(Camera &c, glm::vec2 dxdy);
void rotate_camera(Camera &c, glm::vec2 dxdy);
void zoom_camera(Camera &c, float dz);
glm::mat4 world_to_camera(Camera& c);
glm::mat4 camera_to_world(Camera& c);