62120f120d08d4759b8603d1892d8a654ad00b11
[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         virtual ~Camera();
10
11         virtual Mat4 get_view_matrix() const = 0;
12         virtual void use() const;
13 };
14
15 class OrbitCamera : public Camera {
16 protected:
17         float theta;
18         float phi;
19         float distance;
20
21 public:
22         OrbitCamera();
23         virtual ~OrbitCamera();
24
25         virtual Mat4 get_view_matrix() const override;
26
27         void set_orbit_params(float theta, float phi, float distance);
28 };
29
30 Mat4 calc_projection_matrix(float fov_deg, float aspect, float n, float f);
31
32 #endif // CAMERA_H_