HerdSoftware  0.4.0
TrapezoidalPrism.h
Go to the documentation of this file.
1 /*
2  * TrapezoidalPrism.h
3  *
4  * Created on: 8 Feb 2023
5  * Author: Valerio Formato
6  */
7 
10 #ifndef HERD_TRAPEZOIDALPRISM_H_
11 #define HERD_TRAPEZOIDALPRISM_H_
12 
16 
17 #ifdef HS_USE_ROOT
18 #include "Rtypes.h"
19 #endif
20 
21 namespace Herd {
28 public:
33  TrapezoidalPrism() = default;
34 
36  virtual ~TrapezoidalPrism() = default;
37 
46  TrapezoidalPrism(Trapezium base, Vec3D edge);
47 
54  [[nodiscard]] std::array<Point, 8> Vertices() const;
55 
62  [[nodiscard]] const std::array<Parallelogram, 4> &Faces() const;
63 
70  [[nodiscard]] const std::array<Trapezium, 2> &Bases() const;
71 
77  [[nodiscard]] std::optional<std::array<Point, 2>> Intersections(const Line &line) const;
78 
83  [[nodiscard]] bool Contains(const Point &point) const;
84 
85 private:
88 
89  mutable std::array<Parallelogram, 4> m_faces;
90  mutable std::array<Trapezium, 2> m_bases;
91  mutable bool _facesAreValid{false};
92 
93  void ComputeAllFaces() const;
94 };
95 } // namespace Herd
96 
97 #endif // HERD_TRAPEZOIDALPRISM_H_
Herd::TrapezoidalPrism::m_edge
Vec3D m_edge
Definition: TrapezoidalPrism.h:87
Herd::TrapezoidalPrism::Intersections
std::optional< std::array< Point, 2 > > Intersections(const Line &line) const
Computes the intersection points of the given line with the trapezoidal prism.
Definition: TrapezoidalPrism.cpp:64
Point.h
Herd::TrapezoidalPrism::m_base
Trapezium m_base
Definition: TrapezoidalPrism.h:86
Herd::Vec3D
A class describing a vector in 3D space.
Definition: Vec3D.h:33
Herd::Line
Class describing a line in the 3D space.
Definition: Line.h:37
Herd::TrapezoidalPrism::Bases
const std::array< Trapezium, 2 > & Bases() const
Gets the trapezoidal bases of the trapezoidal prism.
Definition: TrapezoidalPrism.cpp:56
Herd
CssGeoParams.h CssGeoParams class declaration.
Definition: CaloPDCalibrationAlgo.h:22
Herd::TrapezoidalPrism::m_faces
std::array< Parallelogram, 4 > m_faces
Definition: TrapezoidalPrism.h:89
Rectangle.h
Herd::TrapezoidalPrism::TrapezoidalPrism
TrapezoidalPrism()=default
Herd::TrapezoidalPrism::_facesAreValid
bool _facesAreValid
! Check if we already computed the faces
Definition: TrapezoidalPrism.h:91
Herd::TrapezoidalPrism::Vertices
std::array< Point, 8 > Vertices() const
Gets the vertices of the trapezoidal prism.
Definition: TrapezoidalPrism.cpp:21
Trapezium.h
Herd::Trapezium
Definition: Trapezium.h:26
Herd::TrapezoidalPrism::m_bases
std::array< Trapezium, 2 > m_bases
Definition: TrapezoidalPrism.h:90
Herd::TrapezoidalPrism
A trapezoidal prism in 3D space.
Definition: TrapezoidalPrism.h:27
Herd::TrapezoidalPrism::Faces
const std::array< Parallelogram, 4 > & Faces() const
Gets the 4 "lateral" faces of the trapezoidal prism.
Definition: TrapezoidalPrism.cpp:48
Herd::TrapezoidalPrism::~TrapezoidalPrism
virtual ~TrapezoidalPrism()=default
Destructor.
Herd::TrapezoidalPrism::ComputeAllFaces
void ComputeAllFaces() const
Definition: TrapezoidalPrism.cpp:32
Herd::TrapezoidalPrism::Contains
bool Contains(const Point &point) const
Checks if the trapezoidal prism contains the given point.
Definition: TrapezoidalPrism.cpp:110