1 #ifndef PMPL_BOUNDARY_H_
2 #define PMPL_BOUNDARY_H_
17 #include <CGAL/Exact_predicates_exact_constructions_kernel.h>
18 #include <CGAL/Polyhedron_3.h>
19 #include <CGAL/Polyhedron_incremental_builder_3.h>
55 virtual std::unique_ptr<
Boundary> Clone() const = 0;
62 virtual
Space Type() const noexcept = 0;
65 virtual std::
string Name() const noexcept = 0;
68 virtual
size_t GetDimension() const noexcept = 0;
74 virtual
double GetMaxDist(const
double _r1 = 2., const
double _r2 = .5)
80 virtual const
Range<
double>& GetRange(const
size_t _i) const = 0;
83 virtual const std::vector<
double>& GetCenter() const noexcept = 0;
86 virtual
double GetVolume() const noexcept = 0;
93 virtual std::vector<
double> GetRandomPoint() const = 0;
97 virtual
void PushInside(std::vector<
double>& _point) const noexcept = 0;
108 virtual
void ScalePoint(std::vector<
double>& _point) const noexcept;
115 virtual
void UnscalePoint(std::vector<
double>& _point) const noexcept;
124 virtual
bool InBoundary(const Vector3d& _p) const;
129 virtual
bool InBoundary(const std::vector<
double>& _v) const = 0;
135 virtual
bool InBoundary(const
Cfg& _c) const = 0;
144 virtual
double GetClearance(const Vector3d& _p) const = 0;
149 virtual Vector3d GetClearancePoint(const Vector3d& _p) const = 0;
157 virtual
void SetCenter(const std::vector<
double>& _c) noexcept = 0;
161 virtual
void Translate(const Vector3d& _v) = 0;
165 virtual
void Translate(const std::vector<
double>& _t) = 0;
171 virtual
void ResetBoundary(const std::vector<std::pair<
double,
double>>& _bbx,
172 const
double _margin) = 0;
186 virtual
void Write(std::ostream& _os) const = 0;
192 typedef CGAL::Exact_predicates_exact_constructions_kernel
CGALKernel;
213 bool InWorkspace(const
Cfg& _c) const;
219 bool InCSpace(const
Cfg& _c) const;
226 void define_type(stapl::typer&) { }
std::ostream & operator<<(std::ostream &_os, const Boundary &_b)
Definition: Boundary.cpp:190
void Read(GenericStateGraph *_g, const std::string &_filename)
Definition: GenericStateGraph.h:1337
Definition: Boundary.h:30
Space
The types of space that can be modeled with boundaries.
Definition: Boundary.h:38
CGAL::Exact_predicates_exact_constructions_kernel CGALKernel
Definition: Boundary.h:192
virtual ~Boundary() noexcept
CGAL::Polyhedron_3< CGALKernel > CGALPolyhedron
Definition: Boundary.h:193
Definition: CountingStreamBuffer.h:20
Definition: GMSPolyhedron.h:42
A range of numeric values.
Definition: Range.h:17