class Camera {
public:
- float phi;
+ Camera();
+ 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;
+ Vec3 position;
- Camera();
- Camera(float phi, float theta, float distance, float fov);
- ~Camera();
+public:
+ OrbitCamera();
+ virtual ~OrbitCamera();
+
+ virtual Mat4 get_view_matrix() const override;
+
+ void set_orbit_params(float theta, float phi, float distance);
+ void set_position(float x, float y, float z);
};
+Mat4 calc_projection_matrix(float fov_deg, float aspect, float n, float f);
+
#endif // CAMERA_H_
\ No newline at end of file