1 #ifndef CAMERA_HH 2 #define CAMERA_HH 3 4 #include "cinquo.hh" 5 6 class Camera 7 { 8 V3f position; 9 V3f focus; 10 11 float aspect; 12 float fov; 13 float near_plane; 14 float far_plane; 15 16 public: 17 Camera()18 Camera() {}; 19 Camera(float aspect, float fov, 20 float near_plane, float far_plane); 21 init(float aspect,float fov,float near_plane,float far_plane)22 void init(float aspect, float fov, 23 float near_plane, float far_plane) { 24 this->aspect = aspect; 25 this->far_plane = far_plane; 26 this->near_plane = near_plane; 27 this->fov = fov; 28 }; 29 look_at(V3f position,V3f focus)30 void look_at(V3f position, V3f focus) 31 { 32 this->position = position; 33 this->focus = focus; 34 } 35 get_position()36 V3f get_position() 37 { 38 return position; 39 } 40 get_focus()41 V3f get_focus() 42 { 43 return focus; 44 } 45 46 // Returns the up and right axis of the camera in world space 47 // This is needed for billboards. 48 void get_billboard_axes(V3f& up, V3f& right); 49 get_near_plane()50 float get_near_plane() 51 { 52 return near_plane; 53 } 54 set_near_plane(float near_plane)55 void set_near_plane(float near_plane) 56 { 57 this->near_plane = near_plane; 58 } 59 get_far_plane()60 float get_far_plane() 61 { 62 return far_plane; 63 } 64 set_far_plane(float far_plane)65 void set_far_plane(float far_plane) 66 { 67 this->far_plane = far_plane; 68 } 69 get_aspect()70 float get_aspect() 71 { 72 return aspect; 73 } 74 set_aspect(float aspect)75 void set_aspect(float aspect) 76 { 77 this->aspect = aspect; 78 } 79 get_fov()80 float get_fov() 81 { 82 return fov; 83 } 84 set_fov(float fov)85 void set_fov(float fov) 86 { 87 this->fov = fov; 88 } 89 90 void set_matrices(); 91 92 }; 93 94 #endif 95