Parasol Planning Library (PPL)
AbstractBoundingSphericalShell.h
Go to the documentation of this file.
1 #ifndef PMPL_ABSTRACT_BOUNDING_SPHERICAL_SHELL_H_
2 #define PMPL_ABSTRACT_BOUNDING_SPHERICAL_SHELL_H_
3 
4 #include "Boundary.h"
6 
7 
13 
14  public:
15 
18 
24  explicit AbstractBoundingSphericalShell(const size_t _n,
25  const double _outer = std::numeric_limits<double>::max(),
26  const double _inner = 0);
27 
33  explicit AbstractBoundingSphericalShell(const std::vector<double>& _center,
34  const double _outer = std::numeric_limits<double>::max(),
35  const double _inner = 0);
36 
40 
41  virtual ~AbstractBoundingSphericalShell() noexcept;
42 
46 
47  virtual size_t GetDimension() const noexcept override;
48 
49  virtual double GetMaxDist(const double _r1 = 2.0, const double _r2 = 0.5)
50  const override;
51 
52  virtual const Range<double>& GetRange(const size_t _i) const override;
53 
54  virtual const std::vector<double>& GetCenter() const noexcept override;
55 
56  virtual double GetVolume() const noexcept override;
57 
61 
62  virtual std::vector<double> GetRandomPoint() const override;
63 
64  virtual void PushInside(std::vector<double>& _sample) const noexcept override;
65 
69 
70  using Boundary::InBoundary;
71 
72  virtual bool InBoundary(const std::vector<double>& _p) const override;
73 
77 
78  virtual double GetClearance(const Vector3d& _p) const override;
79 
80  virtual Vector3d GetClearancePoint(const Vector3d& _p) const override;
81 
85 
86  virtual void SetCenter(const std::vector<double>& _c) noexcept override;
87 
88  virtual void Translate(const Vector3d& _v) override;
89 
90  virtual void Translate(const std::vector<double>& _t) override;
91 
92  virtual void ResetBoundary(const std::vector<std::pair<double, double>>& _bbx,
93  const double _margin) override;
94 
98 
99  virtual void Read(std::istream& _is, CountingStreamBuffer& _cbs) override;
100 
101  virtual void Write(std::ostream& _os) const override;
102 
104 
105  private:
106 
109 
111  std::vector<Range<double>> ComputeRange() const;
112 
116 
117  std::vector<Range<double>> m_range;
118 
120 
121 };
122 
123 /*----------------------------------- I/O ------------------------------------*/
124 
125 std::ostream& operator<<(std::ostream& _os,
127 
129 //std::istream& operator>>(std::istream& _is, const Boundary& _b);
130 
131 /*----------------------------------------------------------------------------*/
132 
133 #endif
Definition: AbstractBoundingSphericalShell.h:12
virtual void Write(std::ostream &_os) const override
Definition: AbstractBoundingSphericalShell.cpp:206
virtual const std::vector< double > & GetCenter() const noexcept override
Get the boundary's center point.
Definition: AbstractBoundingSphericalShell.cpp:73
virtual void PushInside(std::vector< double > &_sample) const noexcept override
Definition: AbstractBoundingSphericalShell.cpp:95
virtual void ResetBoundary(const std::vector< std::pair< double, double >> &_bbx, const double _margin) override
Definition: AbstractBoundingSphericalShell.cpp:167
virtual std::vector< double > GetRandomPoint() const override
Get a random point inside the boundary.
Definition: AbstractBoundingSphericalShell.cpp:88
virtual ~AbstractBoundingSphericalShell() noexcept
virtual double GetMaxDist(const double _r1=2.0, const double _r2=0.5) const override
Definition: AbstractBoundingSphericalShell.cpp:56
virtual Vector3d GetClearancePoint(const Vector3d &_p) const override
Definition: AbstractBoundingSphericalShell.cpp:125
virtual size_t GetDimension() const noexcept override
Get the dimension of this boundary.
Definition: AbstractBoundingSphericalShell.cpp:49
virtual bool InBoundary(const Vector3d &_p) const
Definition: Boundary.cpp:94
AbstractBoundingSphericalShell(const size_t _n, const double _outer=std::numeric_limits< double >::max(), const double _inner=0)
Definition: AbstractBoundingSphericalShell.cpp:12
virtual void SetCenter(const std::vector< double > &_c) noexcept override
Definition: AbstractBoundingSphericalShell.cpp:135
virtual void Read(std::istream &_is, CountingStreamBuffer &_cbs) override
Definition: AbstractBoundingSphericalShell.cpp:190
virtual double GetVolume() const noexcept override
Get the boundary's volume (Lebesgue Measure).
Definition: AbstractBoundingSphericalShell.cpp:80
virtual double GetClearance(const Vector3d &_p) const override
Definition: AbstractBoundingSphericalShell.cpp:118
virtual const Range< double > & GetRange(const size_t _i) const override
Definition: AbstractBoundingSphericalShell.cpp:63
virtual void Translate(const Vector3d &_v) override
Definition: AbstractBoundingSphericalShell.cpp:147
Definition: Boundary.h:30
Definition: CountingStreamBuffer.h:20
Definition: NSphericalShell.h:16
Definition: XMLNode.h:27
A range of numeric values.
Definition: Range.h:17