Fréchet View  1.6.0
A Tool for Exploring Fréchet Distance Algorithms
poly_path.h
Go to the documentation of this file.
1 #ifndef POLY_PATH_H
2 #define POLY_PATH_H
3 
4 #include <fs_path.h>
5 #include <grid.h>
6 #include <graph_m4ri.h>
7 #include <triangulation.h>
8 #include <utility>
9 
10 namespace frechet { namespace poly {
11 
12 using namespace reach;
13 
24 class PolygonFSPath : public FSPath
25 {
26 private:
29 public:
35 
42  void update(
43  const Graph::ptr result,
44  double epsilon);
45 
54  Curve findShortestPathP(int qa, int qb, Triangulation& tri);
67  Curve findShortestPathQ(int pa, int pb, Triangulation& tri);
68 
69 private:
70 
76  void addFixPoint(int pi, int qi);
81  void addFixPoint(Point p);
88  void drillDown(Graph::ptr res);
98  void drillDown(Graph::ptr M, int k1, int k2);
99 
100  typedef std::pair<int, int> IndexPair;
111  IndexPair findSolutionConnectingPoints(Graph::ptr A, int i, Graph::ptr B) const;
122  int findConnectingPoint(Graph::ptr A, int ia,
123  Graph::ptr B, int ib) const;
131  Interval mapInterval(Orientation o, int p) const;
139  double mapPoint(Orientation o, int p) const;
140 
147  static bool is_consistent(Curve fix);
148 };
149 
150 } } // namespace frechet::poly
151 
152 #endif // POLY_PATH_H
global definitions for all algorithms.
boost::shared_ptr< GraphModel > ptr
smart pointer to a GraphModel object
Definition: graph_model.h:307
GraphModel::ptr gmodel
model for mapping free-space intervals to reachability graph nodes
Definition: poly_path.h:28
QPointF Point
a point in the plane; with double floating point precision. This type is heavily used throughout all ...
Definition: types.h:14
std::pair< int, int > IndexPair
Definition: poly_path.h:100
QPolygonF Curve
a polygonal curve in the plane; with double floating point precision. This type is heavily used throu...
Definition: types.h:20
Orientation
Segment Orientation.
Definition: boundary.h:31
boost::shared_ptr< Graph > ptr
Definition: graph_boost.h:59
Wrapper for CGAL::Triangulation_Data_Structure https://doc.cgal.org/latest/TDS_2/index....
a feasible-path for simple polygons.
Definition: poly_path.h:24
an interval of two double values.
Definition: interval.h:31
boost::shared_ptr< FreeSpace > ptr
smart pointer to FreeSpace object
Definition: freespace.h:92
Calculates a feasible path in the Free-Space given a start point (0,0) and an end point (n-1,...
Definition: fs_path.h:44