quick backup
[demo] / src / camera.h
1 #ifndef CAMERA_H_
2 #define CAMERA_H_
3
4 #include <gmath/gmath.h>
5
6 class Camera {
7 public:
8         Camera();
9         Camera(float phi, float theta, float distance, float fov);
10         virtual ~Camera();
11
12         virtual Mat4 get_view_matrix() const = 0;
13         virtual void use() const;
14 };
15
16 class OrbitCamera : public Camera {
17 protected:
18         float theta;
19         float phi;
20         float distance;
21
22 public:
23         OrbitCamera();
24         OrbitCamera(float theta, float phi, float distance);
25         virtual ~OrbitCamera();
26
27         virtual Mat4 get_view_matrix() const override;
28
29         void set_orbit_params(float phi, float theta, float distance);
30 };
31
32 Mat4 calc_projection_matrix(float fov_deg, float aspect, float n, float f);
33
34 #endif // CAMERA_H_