9 namespace frechet {
namespace reach {
65 typedef boost::shared_ptr<FSPath>
ptr;
81 return path[0].empty() && path[1].empty();
89 Curve getPath(
int i)
const;
101 void mapToP(
Curve path[2])
const;
102 void mapToQ(
Curve path[2])
const;
104 Point mapFromP(
int p)
const;
105 Point mapFromQ(
int q)
const;
107 double mapFromPToQ(
int p)
const;
108 double mapFromQToP(
int q)
const;
120 void clearReachability();
122 virtual void clear();
131 void calculateReachability(
Point start,
Point end,
bool allow_wrap,
double prec=PRECISION);
139 void update(
Point start,
double epsilon);
156 bool isReachable(
int i,
int j,
double prec=PRECISION)
const;
164 bool isReachable(
Point a,
double prec=PRECISION)
const;
199 void calculatePath();
217 bool propagateHorizontalEdge(
Point a,
double bx,
double prec=PRECISION);
225 bool propagateVerticalEdge(
Point a,
double by,
double prec=PRECISION);
234 void propagateInner(
int i,
int j,
double bx,
double by);
243 void propagateBottom(
int i,
int j,
double bx,
double by);
251 int next_vert(
int j);
260 bool left_contains(
int i,
int j,
double y,
double prec=PRECISION)
const;
269 bool bottom_contains(
int i,
int j,
double x,
double prec=PRECISION)
const;
279 void propagateColumn(
int i,
int j0,
double bx,
double by,
bool allow_wrap);
288 void propagateBottom(
int i,
int j0,
double bx,
double by,
bool allow_wrap);
298 static double mapToSegment(
double a,
Point p1,
Point p2);
304 static void append(std::vector<double>& map,
double x);
312 static int binSearchX(
const Curve& curve,
int x);
319 static int binSearchY(
const Curve& curve,
int y);
327 static void copy(
Curve& dest,
const Curve& source,
int i,
int j);
339 static bool are_consistent(
Curve path0,
Curve path1,
int n,
int m);
346 #endif // REACHABILITY_H Represents a polygon line segment from node i to j.
bool wrapTop
free-space wraps at top, Q is closed
global definitions for all algorithms.
const frechet::data::Interval & left(int i, int j) const
boundary interval in the reachability structure. Represents an interval on the boundary of the FreeSp...
bool wrapRight
free-space wraps right, P is closed
const frechet::data::Interval & bottom(int i, int j) const
QPointF Point
a point in the plane; with double floating point precision. This type is heavily used throughout all ...
boost::shared_ptr< FSPath > ptr
smart pointer to an FSPath object
QPolygonF Curve
a polygonal curve in the plane; with double floating point precision. This type is heavily used throu...
virtual ~FSPath()
destructor
A simple two-dimensional array of fixed size.
static const double PRECISION
floating point precision
Array2D< Interval > LR
reachable intervals
Orientation opposite(Orientation ori)
const Curve & fixPoints() const
an interval of two double values.
T & at(int i, int j)
array accessor
FreeSpace::ptr fs
underlying free-space
boost::shared_ptr< FreeSpace > ptr
smart pointer to FreeSpace object
Calculates a feasible path in the Free-Space given a start point (0,0) and an end point (n-1,...