MobileRT  1.0
A multi platform C++ CPU progressive Ray Tracer.
Plane.hpp
Go to the documentation of this file.
1 #ifndef MOBILERT_SHAPES_PLANE_HPP
2 #define MOBILERT_SHAPES_PLANE_HPP
3 
6 #include "MobileRT/Ray.hpp"
7 #include <glm/glm.hpp>
8 
9 namespace MobileRT {
13  class Plane final {
14  private:
15  ::glm::vec3 normal_ {};
16  ::glm::vec3 point_ {};
17  ::std::int32_t materialIndex_ {-1};
18 
19  private:
20  ::glm::vec3 getRightVector() const;
21 
22  void checkArguments() const;
23 
24  public:
25  explicit Plane () = delete;
26 
27  explicit Plane(const ::glm::vec3 &point, const ::glm::vec3 &normal, ::std::int32_t materialIndex);
28 
29  Plane(const Plane &plane) = default;
30 
31  Plane(Plane &&plane) noexcept = default;
32 
33  ~Plane() = default;
34 
35  Plane &operator=(const Plane &plane) = default;
36 
37  Plane &operator=(Plane &&plane) noexcept = default;
38 
39  Intersection intersect(Intersection intersection) const;
40 
41  AABB getAABB() const;
42 
43  float distance(const ::glm::vec3 &point) const;
44 
45  bool intersect(const AABB &box) const;
46 
47  ::glm::vec3 getNormal () const;
48 
49  ::glm::vec3 getPoint () const;
50 
51  ::std::int32_t getMaterialIndex () const;
52  };
53 }//namespace MobileRT
54 
55 #endif //MOBILERT_SHAPES_PLANE_HPP
::glm::vec3 normal_
Definition: Plane.hpp:15
::std::int32_t getMaterialIndex() const
Definition: Plane.cpp:180
::std::int32_t materialIndex_
Definition: Plane.hpp:17
void checkArguments() const
Definition: Plane.cpp:24
::glm::vec3 getRightVector() const
Definition: Plane.cpp:79
~Plane()=default
::glm::vec3 getNormal() const
Definition: Plane.cpp:162
Definition: Intersection.hpp:14
::glm::vec3 point_
Definition: Plane.hpp:16
Definition: Plane.hpp:13
float distance(const ::glm::vec3 &point) const
Definition: Plane.cpp:117
Definition: AABB.hpp:18
AABB getAABB() const
Definition: Plane.cpp:103
Intersection intersect(Intersection intersection) const
Definition: Plane.cpp:38
Plane & operator=(const Plane &plane)=default
::glm::vec3 getPoint() const
Definition: Plane.cpp:171
const AABB box
Definition: TestPlane.cpp:26
Definition: AABB.cpp:105