quick backup:
[demo] / src / camera.h
index 8b3a895..cbd543f 100644 (file)
@@ -5,16 +5,30 @@
 
 class Camera {
 public:
-       float phi;
+       Camera();
+       Camera(float phi, float theta, float distance, float fov);
+       virtual ~Camera();
+
+       virtual Mat4 get_view_matrix() const = 0;
+       virtual void use() const;
+};
+
+class OrbitCamera : public Camera {
+protected:
        float theta;
+       float phi;
        float distance;
 
-       Mat4 m_projection;
-       float fov;
+public:
+       OrbitCamera();
+       OrbitCamera(float theta, float phi, float distance);
+       virtual ~OrbitCamera();
 
-       Camera();
-       Camera(float phi, float theta, float distance, float fov);
-       ~Camera();
+       virtual Mat4 get_view_matrix() const override;
+
+       void set_orbit_params(float phi, float theta, float distance);
 };
 
+Mat4 calc_projection_matrix(float f, float n, float aspect, float fov);
+
 #endif // CAMERA_H_
\ No newline at end of file