a feasible-path for simple polygons.
Adds to the base class:
- feasible path is constructed from a series of smaller sections ("fix points")
- these fix points are extracted from the solution to the algorithm ("Combined Reachability Graphs")
- find shortest paths in P an Q (mapped to diagonals)
- Author
- Peter Schäfer
Definition at line 24 of file poly_path.h.
|
| | PolygonFSPath (FreeSpace::ptr fs) |
| | constructor with free-space More...
|
| |
| void | update (const Graph::ptr result, double epsilon) |
| | compute a feasible path from the results of the simple polygon algorithm More...
|
| |
| Curve | findShortestPathP (int qa, int qb, Triangulation &tri) |
| | given a diagonal in Q, compute the mapped shortest-path in P. More...
|
| |
| Curve | findShortestPathQ (int pa, int pb, Triangulation &tri) |
| | given a diagonal in P, compute the mapped shortest-path in Q More...
|
| |
| | FSPath (FreeSpace::ptr afs) |
| | constructor with free-space More...
|
| |
| virtual | ~FSPath () |
| | destructor More...
|
| |
| bool | empty () const |
| |
| Curve | getPath (int i) const |
| | get the feasible path for display on screen. May be split into two parts. More...
|
| |
| void | mapFromP (Segment pseg, Curve result[2]) const |
| | for a line segment in P, find the mapped part of the feasible path More...
|
| |
| void | mapFromQ (Segment pseg, Curve result[2]) const |
| |
| void | mapToP (Curve path[2]) const |
| |
| void | mapToQ (Curve path[2]) const |
| |
| Point | mapFromP (int p) const |
| |
| Point | mapFromQ (int q) const |
| |
| double | mapFromPToQ (int p) const |
| |
| double | mapFromQToP (int q) const |
| |
| const frechet::data::Interval & | left (int i, int j) const |
| |
| const frechet::data::Interval & | bottom (int i, int j) const |
| |
| const Curve & | fixPoints () const |
| |
| void | clearReachability () |
| |
| virtual void | clear () |
| |
| void | calculateReachability (Point start, Point end, bool allow_wrap, double prec=PRECISION) |
| | update L^R and B from Free-Space diagram More...
|
| |
| void | update (Point start, double epsilon) |
| | compute a feasible path from the free-space diagram More...
|
| |
| Point | toPoint (Pointer segment) |
| | pick a point from a reachability interval More...
|
| |
| bool | isReachable (int i, int j, double prec=PRECISION) const |
| | follow the reachable intervals and test whether a point is reachable from the start More...
|
| |
| bool | isReachable (Point a, double prec=PRECISION) const |
| | follow the reachable intervals and test whether a point is reachable from the start More...
|
| |
| Point | startPoint () const |
| |
|
| void | addFixPoint (int pi, int qi) |
| | add a fix point to the feasible path More...
|
| |
| void | addFixPoint (Point p) |
| | add a fix point to the feasible path More...
|
| |
| void | drillDown (Graph::ptr res) |
| | Drill down, starting from the solution Graph, replacing diagonals step by step. Until finally we have the outer border curves. More...
|
| |
| void | drillDown (Graph::ptr M, int k1, int k2) |
| | given a merged reachability Graph, drill down to the original graphs and find the fixed points of the feasible path More...
|
| |
| IndexPair | findSolutionConnectingPoints (Graph::ptr A, int i, Graph::ptr B) const |
| | given the solution of the simple polygon algorithm, drill down to the original graphs and find the fixed points of the feasible path. The solution is the transitive closure G = A*B*A More...
|
| |
| int | findConnectingPoint (Graph::ptr A, int ia, Graph::ptr B, int ib) const |
| | given two reachability graphs, drill down to the original graphs and find the fixed points of the feasible path. More...
|
| |
| Interval | mapInterval (Orientation o, int p) const |
| | map a node of a reachability graph to the associated free-space interval More...
|
| |
| double | mapPoint (Orientation o, int p) const |
| | map a node of a reachability graph to a point in the free-space interval. More...
|
| |
|
| typedef boost::shared_ptr< FSPath > | ptr |
| | smart pointer to an FSPath object More...
|
| |
| static Interval | opposite (const Interval &LR, const Interval &RF) |
| |
| static void | propagate (const Interval &RF, const Interval &TF, const Interval &LR, const Interval &BR, Interval &RR, Interval &TR) |
| | propagate the reachable intervals within one cell. from bottom and left to right and top More...
|
| |
| static const double | PRECISION = 1e-9 |
| | floating point precision More...
|
| |
| | FSPath () |
| | constructor for derived classes only More...
|
| |
| void | calculatePath () |
| | calculate the feasible path More...
|
| |
| void | findPathSegment (Point a, Point b, Curve curve[2], int &cc) |
| | compute one segment of the feasible path. THe path is completed from top-right backwards to bottom-left. More...
|
| |
| bool | propagateHorizontalEdge (Point a, double bx, double prec=PRECISION) |
| | propagate the reachable intervals along the horizontal axis More...
|
| |
| bool | propagateVerticalEdge (Point a, double by, double prec=PRECISION) |
| | propagate the reachable intervals along the vertical axis More...
|
| |
| void | propagateInner (int i, int j, double bx, double by) |
| | propagate the reachable intervals within one cell. The cell is located in the inner part of the free-space diagram. More...
|
| |
| void | propagateBottom (int i, int j, double bx, double by) |
| | propagate the reachable intervals within one cell. The cell is located at the bottom of the free-space diagram. More...
|
| |
| int | next_hor (int i) |
| |
| int | next_vert (int j) |
| |
| bool | left_contains (int i, int j, double y, double prec=PRECISION) const |
| | test the reachability interval on the left of a cell More...
|
| |
| bool | bottom_contains (int i, int j, double x, double prec=PRECISION) const |
| | test the reachability interval on the bottom of a cell More...
|
| |
| void | propagateColumn (int i, int j0, double bx, double by, bool allow_wrap) |
| | propagate the reachable intervals along a column of the free-space diagram. More...
|
| |
| void | propagateBottom (int i, int j0, double bx, double by, bool allow_wrap) |
| | propagate the reachable intervals along a bottom row of the free-space diagram. More...
|
| |
| static double | mapToSegment (double a, Point p1, Point p2) |
| | map a relative offset to a line segment. For values in [0..1] the resulting point is one the line segment. For value <0 or >1 the resulting point would be off the line segment. More...
|
| |
| static void | append (std::vector< double > &map, double x) |
| | append a value to a vector, avoiding duplicates More...
|
| |
| static int | binSearchX (const Curve &curve, int x) |
| | find a point by its x coordinate More...
|
| |
| static int | binSearchY (const Curve &curve, int y) |
| | find a point by its y coordinate More...
|
| |
| static void | copy (Curve &dest, const Curve &source, int i, int j) |
| | copy parts of a curve More...
|
| |
| static bool | are_consistent (Curve path0, Curve path1, int n, int m) |
| | test if two curves are consistent with being a feasible path. Both curves must be monotone (asecning x and y-coordinates), wrap at the right or top edge. Used for debuggin and unit tests. More...
|
| |
| FreeSpace::ptr | fs |
| | underlying free-space More...
|
| |
| bool | wrapTop |
| | free-space wraps at top, Q is closed More...
|
| |
| bool | wrapRight |
| | free-space wraps right, P is closed More...
|
| |
| Array2D< Interval > | LR |
| | reachable intervals More...
|
| |
| Array2D< Interval > | BR |
| |
| Curve | fix |
| | fix points More...
|
| |
| Curve | path [2] |
| | Path curves(s) More...
|
| |