MobileRT  1.0
A multi platform C++ CPU progressive Ray Tracer.
Camera.hpp
Go to the documentation of this file.
1 #ifndef MOBILERT_CAMERA_HPP
2 #define MOBILERT_CAMERA_HPP
3 
5 #include "MobileRT/Ray.hpp"
6 #include <algorithm>
7 #include <atomic>
8 #include <glm/glm.hpp>
9 #include <random>
10 
11 namespace MobileRT {
12 
16  class Camera {
17  protected:
18  static float degToRad(float deg);
19 
20  static float radToDeg(float rad);
21 
22  public:
26  ::glm::vec3 position_ {};
27 
31  ::glm::vec3 direction_ {};
32 
36  ::glm::vec3 right_ {};
37 
41  ::glm::vec3 up_ {};
42 
43  public:
44  explicit Camera(const ::glm::vec3 &position,
45  const ::glm::vec3 &lookAt, const ::glm::vec3 &up);
46 
47  Camera(const Camera &camera);
48 
49  Camera(Camera &&camera) noexcept = default;
50 
51  virtual ~Camera() = default;
52 
53  Camera &operator=(const Camera &camera) = default;
54 
55  Camera &operator=(Camera &&camera) noexcept = default;
56 
66  virtual Ray generateRay(float u, float v,
67  float deviationU,
68  float deviationV) const = 0;
69 
70  virtual AABB getAABB() const;
71  };
72 }//namespace MobileRT
73 
74 #endif //MOBILERT_CAMERA_HPP
static float degToRad(float deg)
Definition: Camera.cpp:39
::glm::vec3 position_
Definition: Camera.hpp:26
::glm::vec3 direction_
Definition: Camera.hpp:31
virtual AABB getAABB() const
Definition: Camera.cpp:60
static float radToDeg(float rad)
Definition: Camera.cpp:50
::glm::vec3 right_
Definition: Camera.hpp:36
Definition: Camera.hpp:16
::glm::vec3 up_
Definition: Camera.hpp:41
Definition: AABB.hpp:18
Definition: Ray.hpp:13
virtual ~Camera()=default
Camera(const ::glm::vec3 &position, const ::glm::vec3 &lookAt, const ::glm::vec3 &up)
Definition: Camera.cpp:14
Camera & operator=(const Camera &camera)=default
virtual Ray generateRay(float u, float v, float deviationU, float deviationV) const =0
Definition: AABB.cpp:105