1 #ifndef WORKSPACE_DECOMPOSITION_H
2 #define WORKSPACE_DECOMPOSITION_H
6 #include <containers/sequential/graph/graph.h>
23 stapl::NONMULTIEDGES, WorkspaceRegion,
31 typedef stapl::sequential::graph<stapl::DIRECTED, stapl::NONMULTIEDGES,
34 typedef typename RegionGraph::vertex_iterator
iterator;
50 typedef stapl::sequential::graph<stapl::DIRECTED, stapl::NONMULTIEDGES,
77 const Point3d&
GetPoint(const
size_t _i) const noexcept;
79 const std::vector<Point3d>&
GetPoints() const noexcept;
124 void AddPortal(const
size_t _r1, const
size_t _r2);
137 void Print(std::ostream& _os) const;
142 void WriteObj(const std::
string& _filename) const;
151 std::vector<
size_t>
FindPath(const
size_t _source, const
size_t _target)
163 const
double _threshold) const;
174 void AssertMutable() const;
177 void ComputeDualGraph();
181 void UpdateDecompositionPointers();
187 std::vector<Point3d> m_points;
190 bool m_finalized{
false};
Definition: WorkspaceDecomposition.h:24
DualGraph & GetDualGraph() noexcept
Definition: WorkspaceDecomposition.cpp:139
void AddPoint(const Point3d &_p)
Definition: WorkspaceDecomposition.cpp:154
const Point3d & GetPoint(const size_t _i) const noexcept
Definition: WorkspaceDecomposition.cpp:86
RegionGraph::const_vertex_iterator const_iterator
Definition: WorkspaceDecomposition.h:35
void Print(std::ostream &_os) const
Write the decomposition graph to an output stream.
Definition: WorkspaceDecomposition.cpp:213
stapl::sequential::graph< stapl::DIRECTED, stapl::NONMULTIEDGES, Vector3d, double > DualGraph
Definition: WorkspaceDecomposition.h:51
const WorkspaceRegion & GetRegion(const size_t _i) const noexcept
Definition: WorkspaceDecomposition.cpp:108
const size_t GetNumRegions() const noexcept
Definition: WorkspaceDecomposition.cpp:101
RegionGraph::edge_iterator edge_iterator
Definition: WorkspaceDecomposition.h:37
std::vector< size_t > FindNeighborhood(const std::vector< size_t > &_roots, const double _threshold) const
Definition: WorkspaceDecomposition.cpp:303
WorkspaceDecomposition & operator=(const WorkspaceDecomposition &)
Definition: WorkspaceDecomposition.cpp:44
stapl::sequential::graph< stapl::DIRECTED, stapl::NONMULTIEDGES, WorkspaceRegion, WorkspacePortal > RegionGraph
Definition: WorkspaceDecomposition.h:32
const vertex_descriptor GetDescriptor(const WorkspaceRegion &_region) const noexcept
Definition: WorkspaceDecomposition.cpp:115
std::vector< size_t > FindPath(const size_t _source, const size_t _target) const
Definition: WorkspaceDecomposition.cpp:256
const WorkspacePortal & GetPortal(const size_t _i1, const size_t _i2) const noexcept
Definition: WorkspaceDecomposition.cpp:127
const size_t GetNumPoints() const noexcept
Definition: WorkspaceDecomposition.cpp:79
RegionGraph::vertex_iterator iterator
Definition: WorkspaceDecomposition.h:34
RegionGraph::const_edge_iterator const_edge_iterator
Definition: WorkspaceDecomposition.h:38
RegionGraph::vertex_descriptor vertex_descriptor
Definition: WorkspaceDecomposition.h:43
RegionGraph::adj_edge_iterator adj_edge_iterator
Definition: WorkspaceDecomposition.h:40
virtual ~WorkspaceDecomposition()
const std::vector< Point3d > & GetPoints() const noexcept
Definition: WorkspaceDecomposition.cpp:93
RegionGraph::const_adj_edge_iterator const_adj_edge_iterator
Definition: WorkspaceDecomposition.h:41
void Finalize()
Definition: WorkspaceDecomposition.cpp:204
void WriteObj(const std::string &_filename) const
Definition: WorkspaceDecomposition.cpp:231
void AddPortal(const size_t _r1, const size_t _r2)
Definition: WorkspaceDecomposition.cpp:196
void AddTetrahedralRegion(const int _pts[4])
Definition: WorkspaceDecomposition.cpp:162
RegionGraph::edge_descriptor edge_descriptor
Definition: WorkspaceDecomposition.h:44
Definition: WorkspacePortal.h:19
Definition: WorkspaceRegion.h:18