Leonetienne/Eule
Homemade math library, mainly targetted towards computer graphics
TrapazoidalPrismCollider.h
Go to the documentation of this file.
1 #pragma once
2 #include "Vector3.h"
3 #include "Collider.h"
4 #include <array>
5 
6 namespace Eule
7 {
14  {
15  public:
17  TrapazoidalPrismCollider(const TrapazoidalPrismCollider& other) = default;
18  TrapazoidalPrismCollider(TrapazoidalPrismCollider&& other) noexcept = default;
19  void operator=(const TrapazoidalPrismCollider& other);
20  void operator=(TrapazoidalPrismCollider&& other) noexcept;
21 
23  const Vector3d& GetVertex(std::size_t index) const;
24 
26  void SetVertex(std::size_t index, const Vector3d value);
27 
29  bool Contains(const Vector3d& point) const override;
30 
31  /* Vertex identifiers */
32  static constexpr std::size_t BACK = 0;
33  static constexpr std::size_t FRONT = 4;
34  static constexpr std::size_t LEFT = 0;
35  static constexpr std::size_t RIGHT = 2;
36  static constexpr std::size_t BOTTOM = 0;
37  static constexpr std::size_t TOP = 1;
38 
39  private:
40  enum class FACE_NORMALS : std::size_t;
41 
43  void GenerateNormalsFromVertices();
44 
46  double FaceDot(FACE_NORMALS face, const Vector3d& point) const;
47 
48  std::array<Vector3d, 8> vertices;
49 
50 
51  // Face normals
52  enum class FACE_NORMALS : std::size_t
53  {
54  LEFT = 0,
55  RIGHT = 1,
56  FRONT = 2,
57  BACK = 3,
58  TOP = 4,
59  BOTTOM = 5
60  };
61  std::array<Vector3d, 6> faceNormals;
62  };
63 }
Eule::TrapazoidalPrismCollider::RIGHT
static constexpr std::size_t RIGHT
Definition: TrapazoidalPrismCollider.h:35
Eule::Collider
Abstract class of a collider domain.
Definition: Collider.h:10
Eule::TrapazoidalPrismCollider::BACK
static constexpr std::size_t BACK
Definition: TrapazoidalPrismCollider.h:32
Eule::Vector3< double >
Eule::TrapazoidalPrismCollider::FRONT
static constexpr std::size_t FRONT
Definition: TrapazoidalPrismCollider.h:33
Eule::TrapazoidalPrismCollider::BOTTOM
static constexpr std::size_t BOTTOM
Definition: TrapazoidalPrismCollider.h:36
Eule::TrapazoidalPrismCollider::operator=
void operator=(const TrapazoidalPrismCollider &other)
Definition: TrapazoidalPrismCollider.cpp:10
Eule::TrapazoidalPrismCollider::LEFT
static constexpr std::size_t LEFT
Definition: TrapazoidalPrismCollider.h:34
Eule::TrapazoidalPrismCollider::SetVertex
void SetVertex(std::size_t index, const Vector3d value)
Will set the value of a specific vertex.
Definition: TrapazoidalPrismCollider.cpp:31
Eule::TrapazoidalPrismCollider::Contains
bool Contains(const Vector3d &point) const override
Tests, if this Collider contains a point.
Definition: TrapazoidalPrismCollider.cpp:103
Vector3.h
Eule::TrapazoidalPrismCollider
A collider describing a trapazoidal prism.
Definition: TrapazoidalPrismCollider.h:13
Eule::TrapazoidalPrismCollider::TrapazoidalPrismCollider
TrapazoidalPrismCollider()
Definition: TrapazoidalPrismCollider.cpp:5
Eule::TrapazoidalPrismCollider::GetVertex
const Vector3d & GetVertex(std::size_t index) const
Will return a specific vertex.
Definition: TrapazoidalPrismCollider.cpp:26
Collider.h
Eule::TrapazoidalPrismCollider::TOP
static constexpr std::size_t TOP
Definition: TrapazoidalPrismCollider.h:37
Eule
Definition: Collider.h:4