quick backup
[demo] / src / camera.cc
index 4db7286..0f7773e 100644 (file)
@@ -30,23 +30,28 @@ void OrbitCamera::set_orbit_params(float phi, float theta, float distance)
 Mat4 OrbitCamera::get_view_matrix() const
 {
        Mat4 view_matrix;
-       view_matrix.translate(Vec3(0, 0, -distance));
-       view_matrix.rotate_x(phi * (float)M_PI / 180);
        view_matrix.rotate_y(theta * (float)M_PI / 180);
+       view_matrix.rotate_x(phi * (float)M_PI / 180);
+       view_matrix.translate(Vec3(0, 0, -distance));
 
        return view_matrix;
 }
 
-Mat4 calc_projection_matrix(float f, float n, float aspect, float fov)
+Mat4 calc_projection_matrix(float fov_deg, float aspect, float n, float f)
 {
+       float fov = fov_deg / 180 * M_PI;
+
        float tmp;
        tmp = 1 / tan(fov / 2.0);
 
+       /* near - far clipping planes */
+       float range = n - f;
+
        Mat4 pmat = Mat4(
-                       -tmp/aspect,    0,              0,                                      0,
+                       tmp/aspect,     0,              0,                                      0,
                        0,                              tmp,    0,                                      0,
-                       0,                              0,      (f + n) / (n - f),      (2 * f * n) / (n - f),
-                       0,                              0,              -1,                                     0
+                       0,                              0,              (f + n) / range,        -1,
+                       0,                              0,              2 * n * f / range,      0
                    );
 
        return pmat;