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