121 double x_min, x_max, y_min, y_max;
135 Point(
double x_temp,
double y_temp) {
141 double x()
const {
return x_; }
143 double y()
const {
return y_; }
227 double epsilon = 0.0)
const;
236 bool in(
const Line_Segment &line_segment_temp,
double epsilon = 0.0)
const;
248 double epsilon = 0.0)
const;
263 bool in(
const Polygon &polygon_temp,
double epsilon = 0.0)
const;
277 bool in(
const Environment &environment_temp,
double epsilon = 0.0)
const;
287 double epsilon = 0.0)
const;
290 void set_x(
double x_temp) { x_ = x_temp; }
292 void set_y(
double y_temp) { y_ = y_temp; }
319 double epsilon = 0.0);
346 double epsilon = 0.0);
358bool operator==(
const Point &point1,
const Point &point2);
360bool operator!=(
const Point &point1,
const Point &point2);
370bool operator<(
const Point &point1,
const Point &point2);
379bool operator>(
const Point &point1,
const Point &point2);
388bool operator>=(
const Point &point1,
const Point &point2);
397bool operator<=(
const Point &point1,
const Point &point2);
400Point
operator+(
const Point &point1,
const Point &point2);
402Point
operator-(
const Point &point1,
const Point &point2);
405Point operator*(
const Point &point1,
const Point &point2);
408Point operator*(
double scalar,
const Point &point2);
410Point operator*(
const Point &point1,
double scalar);
419double cross(
const Point &point1,
const Point &point2);
425double distance(
const Point &point1,
const Point &point2);
432double distance(
const Point &point_temp,
const Line_Segment &line_segment_temp);
438double distance(
const Line_Segment &line_segment_temp,
const Point &point_temp);
445double distance(
const Point &point_temp,
const Ray &ray_temp);
451double distance(
const Ray &ray_temp,
const Point &point_temp);
458double distance(
const Point &point_temp,
const Polyline &polyline_temp);
464double distance(
const Polyline &polyline_temp,
const Point &point_temp);
485 const Environment &environment_temp);
492 const Point &point_temp);
495std::ostream &
operator<<(std::ostream &outs,
const Point &point_temp);
538 unsigned size()
const {
return size_; }
607bool operator==(
const Line_Segment &line_segment1,
608 const Line_Segment &line_segment2);
610bool operator!=(
const Line_Segment &line_segment1,
611 const Line_Segment &line_segment2);
622bool equivalent(Line_Segment line_segment1, Line_Segment line_segment2,
630double distance(
const Line_Segment &line_segment1,
631 const Line_Segment &line_segment2);
640 const Polygon &polygon);
649 const Line_Segment &line_segment);
657bool intersect(
const Line_Segment &line_segment1,
658 const Line_Segment &line_segment2,
double epsilon = 0.0);
671 const Line_Segment &line_segment2,
double epsilon = 0.0);
685Line_Segment
intersection(
const Line_Segment &line_segment1,
686 const Line_Segment &line_segment2,
687 double epsilon = 0.0);
691 const Line_Segment &line_segment_temp);
709 Angle(
double data_temp);
713 Angle(
double rise_temp,
double run_temp);
716 double get()
const {
return angle_radians_; }
719 void set(
double data_temp);
731 double angle_radians_;
735bool operator==(
const Angle &angle1,
const Angle &angle2);
737bool operator!=(
const Angle &angle1,
const Angle &angle2);
740bool operator>(
const Angle &angle1,
const Angle &angle2);
742bool operator<(
const Angle &angle1,
const Angle &angle2);
744bool operator>=(
const Angle &angle1,
const Angle &angle2);
746bool operator<=(
const Angle &angle1,
const Angle &angle2);
749Angle
operator+(
const Angle &angle1,
const Angle &angle2);
751Angle
operator-(
const Angle &angle1,
const Angle &angle2);
769std::ostream &
operator<<(std::ostream &outs,
const Angle &angle_temp);
798 double epsilon = 0.0);
806 double range()
const {
return range_; }
821 void set_x(
double x_temp);
827 void set_y(
double y_temp);
862bool operator==(
const Polar_Point &polar_point1,
863 const Polar_Point &polar_point2);
864bool operator!=(
const Polar_Point &polar_point1,
865 const Polar_Point &polar_point2);
874bool operator>(
const Polar_Point &polar_point1,
875 const Polar_Point &polar_point2);
883bool operator<(
const Polar_Point &polar_point1,
884 const Polar_Point &polar_point2);
892bool operator>=(
const Polar_Point &polar_point1,
893 const Polar_Point &polar_point2);
901bool operator<=(
const Polar_Point &polar_point1,
902 const Polar_Point &polar_point2);
906 const Polar_Point &polar_point_temp);
921 : base_point_(base_point_temp), bearing_(bearing_temp) {}
945bool operator==(
const Ray &ray1,
const Ray &ray2);
950bool operator!=(
const Ray &ray1,
const Ray &ray2);
962 const Line_Segment &line_segment_temp,
963 double epsilon = 0.0);
973Line_Segment
intersection(
const Line_Segment &line_segment_temp,
974 const Ray &ray_temp,
double epsilon = 0.0);
984 Polyline(
const std::vector<Point> &vertices_temp) {
985 vertices_ = vertices_temp;
988 Polyline(
const std::string &filename);
998 unsigned size()
const {
return vertices_.size(); }
1027 vertices_ = vertices_temp;
1048 return vertices_ == other.vertices_;
1052 std::vector<Point> vertices_;
1056std::ostream &
operator<<(std::ostream &outs,
const Polyline &polyline_temp);
1076 Polygon(
const std::string &filename);
1081 Polygon(
const std::vector<Point> &vertices_temp);
1094 return vertices_[i % vertices_.size()];
1100 unsigned n()
const {
return vertices_.size(); }
1120 bool is_simple(
double epsilon = 0.0)
const;
1140 double area()
const;
1164 std::vector<Point> random_points(
const unsigned &count,
1165 double epsilon = 0.0)
const;
1184 vertices_ = vertices_temp;
1218 std::vector<Point> vertices_;
1227bool operator==(Polygon polygon1, Polygon polygon2);
1228bool operator!=(Polygon polygon1, Polygon polygon2);
1245bool equivalent(Polygon polygon1, Polygon polygon2,
double epsilon = 0.0);
1255std::ostream &
operator<<(std::ostream &outs,
const Polygon &polygon_temp);
1275 outer_boundary_ = polygon_temp;
1276 update_flattened_index_key();
1285 Environment(
const std::vector<Polygon> &polygons);
1303 return outer_boundary_;
1305 return holes_[i - 1];
1323 unsigned h()
const {
return holes_.size(); }
1360 bool is_valid(
double epsilon = 0.0)
const;
1374 double area()
const;
1398 double epsilon = 0.0)
const;
1423 double epsilon = 0.0);
1437 double epsilon = 0.0);
1444 std::vector<Polygon>
1446 double epsilon = 0.0) {
1447 std::vector<Polygon> cells;
1470 return outer_boundary_;
1472 return holes_[i - 1];
1491 outer_boundary_ = polygon_temp;
1492 update_flattened_index_key();
1496 holes_.push_back(polygon_temp);
1497 update_flattened_index_key();
1530 std::vector<Polygon> holes_;
1533 std::vector<std::pair<unsigned, unsigned> > flattened_index_key_;
1537 void update_flattened_index_key();
1541 std::pair<unsigned, unsigned> one_to_two(
unsigned k)
const;
1548 unsigned vertex_index;
1550 std::list<Shortest_Path_Node>::iterator search_tree_location;
1552 std::list<Shortest_Path_Node>::iterator parent_search_tree_location;
1554 double cost_to_come;
1556 double estimated_cost_to_go;
1559 double f1 = this->cost_to_come + this->estimated_cost_to_go;
1560 double f2 = spn2.cost_to_come + spn2.estimated_cost_to_go;
1565 else if (this->vertex_index < spn2.vertex_index)
1567 else if (this->vertex_index > spn2.vertex_index)
1569 else if (&(*(this->parent_search_tree_location)) <
1570 &(*(spn2.parent_search_tree_location)))
1576 void print()
const {
1577 std::cout <<
" vertex_index = " << vertex_index << std::endl
1578 <<
"parent's vertex_index = "
1579 << parent_search_tree_location->vertex_index << std::endl
1580 <<
" cost_to_come = " << cost_to_come << std::endl
1581 <<
" estimated_cost_to_go = " << estimated_cost_to_go
1603 Guards(
const std::string &filename);
1605 Guards(
const std::vector<Point> &positions) { positions_ = positions; }
1615 unsigned N()
const {
return positions_.size(); }
1621 bool in(
const Polygon &polygon_temp,
double epsilon = 0.0)
const;
1623 bool in(
const Environment &environment_temp,
double epsilon = 0.0)
const;
1661 positions_ = positions_temp;
1687 double epsilon = 0.0);
1715 double epsilon = 0.0);
1731 std::vector<Point> positions_;
1735std::ostream &
operator<<(std::ostream &outs,
const Guards &guards);
1777 double epsilon = 0.0);
1792 double epsilon = 0.0);
1809 : first(ppoint1), second(ppoint2) {}
1814 std::list<Polar_Edge>::iterator incident_edge;
1818 void set_polar_point(
const Polar_Point &ppoint_temp) {
1850 const Point *
const observer_pointer;
1857 double epsilon_temp)
1858 : observer_pointer(&
observer), current_vertex_pointer(¤t_vertex),
1859 epsilon(epsilon_temp) {}
1860 bool operator()(std::list<Polar_Edge>::iterator e1,
1861 std::list<Polar_Edge>::iterator e2)
const {
1864 Ray(*observer_pointer, current_vertex_pointer->
bearing()),
1867 Ray(*observer_pointer, current_vertex_pointer->
bearing()),
1869 if (xing1.
size() > 0 and xing2.
size() > 0) {
1879 else if (xing1.
size() == 0 and xing2.
size() > 0)
1881 else if (xing1.
size() > 0 and xing2.
size() == 0)
1889 const Point &point3,
double epsilon = 0.0)
const;
1894 void chop_spikes_at_back(
const Point &
observer,
double epsilon);
1895 void chop_spikes_at_wrap_around(
const Point &
observer,
double epsilon);
1900 const std::list<Polar_Edge>::iterator &active_edge);
1920 adjacency_matrix_ = NULL;
1960 const Environment &environment,
double epsilon = 0.0);
1979 double epsilon = 0.0);
1992 bool operator()(
unsigned i1,
unsigned j1,
unsigned i2,
unsigned j2)
const;
2009 bool operator()(
unsigned k1,
unsigned k2)
const;
2011 unsigned n()
const {
return n_; }
2024 bool &
operator()(
unsigned i1,
unsigned j1,
unsigned i2,
unsigned j2);
2051 std::vector<unsigned> vertex_counts_;
2053 bool **adjacency_matrix_;
2055 unsigned two_to_one(
unsigned i,
unsigned j)
const;
2060 const Visibility_Graph &visibility_graph);
2093 template <std::
size_t N>
2095 static_assert(N % 2 == 0,
2096 "Specify an even number of points to make a point array.");
2097 std::vector<Point> point_vector;
2098 for (
size_t i = 0; i < N; i += 2) {
2099 point_vector.push_back(
Point(vertices[i], vertices[i + 1]));
2101 return point_vector;
angle in radians represented by a value in the interval [0,2*M_PI]
Definition: visilibity.hpp:699
void set(double data_temp)
set angle, mod into interval [0, 2*PI)
Definition: visilibity.cpp:883
void randomize()
set to new random angle in [0, 2*M_PI)
Definition: visilibity.cpp:885
Angle()
default
Definition: visilibity.hpp:707
double get() const
get radians
Definition: visilibity.hpp:716
void set_to_2pi()
set angle data to 2*M_PI
Definition: visilibity.hpp:726
Definition: visilibity.hpp:1543
environment represented by simple polygonal outer boundary with simple polygonal holes
Definition: visilibity.hpp:1263
double boundary_length() const
sum of perimeter lengths of outer boundary and holes
Definition: visilibity.cpp:1768
double area() const
(obstacle/hole free) area of the Environment
Definition: visilibity.cpp:1778
Polyline shortest_path(const Point &start, const Point &finish, const Visibility_Graph &visibility_graph, double epsilon=0.0)
compute a shortest path between 2 Points
Definition: visilibity.cpp:1810
void eliminate_redundant_vertices(double epsilon=0.0)
eliminates vertices which are (epsilon) - colinear with their respective neighbors
Definition: visilibity.cpp:2131
void enforce_standard_form()
enforces outer boundary vertices are listed ccw and holes listed cw, and that these lists begin with ...
Definition: visilibity.cpp:2120
unsigned h() const
hole count
Definition: visilibity.hpp:1323
unsigned n() const
vertex count
Definition: visilibity.cpp:1651
const Polygon & operator[](unsigned i) const
raw access to Polygons
Definition: visilibity.hpp:1301
void set_outer_boundary(const Polygon &polygon_temp)
set outer boundary
Definition: visilibity.hpp:1490
Polygon & operator[](unsigned i)
raw access to Polygons
Definition: visilibity.hpp:1468
void reverse_holes()
reverse (cyclic) order of vertices belonging to holes only
Definition: visilibity.cpp:2139
const Point & operator()(unsigned k) const
raw access to vertices via flattened index
Definition: visilibity.cpp:1645
Environment(const Polygon &polygon_temp)
construct Environment without holes
Definition: visilibity.hpp:1274
void write_to_file(const std::string &filename, int fios_precision_temp=FIOS_PRECISION)
write lists of vertices to *.environment file
Definition: visilibity.cpp:2095
std::vector< Polygon > compute_partition_cells(std::vector< Line_Segment > partition_inducing_segments, double epsilon=0.0)
compute the faces (partition cells) of an arrangement of Line_Segments inside the Environment
Definition: visilibity.hpp:1445
void add_hole(const Polygon &polygon_temp)
add hole
Definition: visilibity.hpp:1495
std::vector< Point > random_points(const unsigned &count, double epsilon=0.0) const
get STL vector of count Points randomly situated within epsilon of the Environment
Definition: visilibity.cpp:1785
Environment()
default to empty
Definition: visilibity.hpp:1268
bool is_valid(double epsilon=0.0) const
true iff epsilon -valid
Definition: visilibity.cpp:1679
Bounding_Box bbox() const
box which fits snugly around the Environment
Definition: visilibity.hpp:1390
double diameter() const
Euclidean diameter.
Definition: visilibity.hpp:1384
unsigned r() const
total reflex vertex count (nonconvex vertices)
Definition: visilibity.cpp:1659
bool is_in_standard_form() const
true iff lexicographically smallest vertex is first in each list of vertices representing a Polygon o...
Definition: visilibity.cpp:1669
set of Guards represented by a list of Points
Definition: visilibity.hpp:1593
void enforce_lex_order()
sort positions in lexicographic order
Definition: visilibity.cpp:2308
Point & operator[](unsigned i)
raw access to guard position Points
Definition: visilibity.hpp:1656
void snap_to_boundary_of(const Environment &environment_temp, double epsilon=0.0)
relocate each guard to closest Point on boundary if within epsilon of the boundary (of environment_te...
Definition: visilibity.cpp:2326
Guards()
default to empty
Definition: visilibity.hpp:1598
void push_back(const Point &point_temp)
add a guard
Definition: visilibity.hpp:1658
bool noncolocated(double epsilon=0.0) const
true iff no two guards are w/in epsilon of each other
Definition: visilibity.cpp:2227
unsigned N() const
guard count
Definition: visilibity.hpp:1615
void set_positions(const std::vector< Point > &positions_temp)
set positions with STL vector of Points
Definition: visilibity.hpp:1660
const Point & operator[](unsigned i) const
raw access to guard position Points
Definition: visilibity.hpp:1613
bool are_lex_ordered() const
true iff positions are lexicographically ordered
Definition: visilibity.cpp:2218
void snap_to_vertices_of(const Environment &environment_temp, double epsilon=0.0)
relocate each guard to closest vertex if within epsilon of some vertex (of environment_temp)
Definition: visilibity.cpp:2315
double diameter() const
Euclidean diameter.
Definition: visilibity.cpp:2249
bool in(const Polygon &polygon_temp, double epsilon=0.0) const
true iff all guards are located in polygon_temp
Definition: visilibity.cpp:2235
void write_to_file(const std::string &filename, int fios_precision_temp=FIOS_PRECISION)
write list of positions to *.guards file
Definition: visilibity.cpp:2291
void reverse()
reverse order of positions
Definition: visilibity.cpp:2313
Guards(const std::vector< Point > &positions)
construct from STL vector of Points
Definition: visilibity.hpp:1605
Bounding_Box bbox() const
box which fits snugly around the Guards
Definition: visilibity.cpp:2263
line segment in the plane represented by its endpoints
Definition: visilibity.hpp:502
Line_Segment & operator=(const Line_Segment &line_segment_temp)
assignment operator
Definition: visilibity.cpp:537
void reverse()
reverse order of endpoints
Definition: visilibity.cpp:625
void enforce_standard_form()
enforce that lex. smallest endpoint first
Definition: visilibity.cpp:633
bool is_in_standard_form() const
true iff vertices in lex. order
Definition: visilibity.cpp:529
virtual ~Line_Segment()
destructor
Definition: visilibity.cpp:644
double length() const
Euclidean length.
Definition: visilibity.cpp:523
Line_Segment()
default to empty
Definition: visilibity.cpp:458
Point midpoint() const
midpoint
Definition: visilibity.cpp:517
unsigned size() const
number of distinct endpoints
Definition: visilibity.hpp:538
Point first() const
first endpoint
Definition: visilibity.cpp:502
void set_second(const Point &point_temp, double epsilon=0.0)
set second endpoint
Definition: visilibity.cpp:593
void set_first(const Point &point_temp, double epsilon=0.0)
set first endpoint
Definition: visilibity.cpp:561
Point second() const
second endpoint
Definition: visilibity.cpp:508
void clear()
erase both endpoints and set line segment empty (size 0)
Definition: visilibity.cpp:638
Point in the plane represented by Cartesian coordinates.
Definition: visilibity.hpp:125
Point(double x_temp, double y_temp)
costruct from raw coordinates
Definition: visilibity.hpp:135
bool in(const Line_Segment &line_segment_temp, double epsilon=0.0) const
true iff w/in epsilon of line_segment_temp
Definition: visilibity.cpp:211
void set_y(double y_temp)
change y coordinate
Definition: visilibity.hpp:292
bool on_boundary_of(const Polygon &polygon_temp, double epsilon=0.0) const
true iff w/in epsilon of boundary of polygon_temp
Definition: visilibity.cpp:191
bool in_relative_interior_of(const Line_Segment &line_segment_temp, double epsilon=0.0) const
true iff w/in epsilon of interior but greater than espilon away from endpoints of line_segment_temp
Definition: visilibity.cpp:219
Point projection_onto_boundary_of(const Polygon &polygon_temp) const
closest Point on boundary of polygon_temp
Definition: visilibity.cpp:156
void snap_to_boundary_of(const Polygon &polygon_temp, double epsilon=0.0)
relocate to closest Point on boundary if w/in epsilon of the boundary (of polygon_temp)
Definition: visilibity.cpp:296
double y() const
get y coordinate
Definition: visilibity.hpp:143
void snap_to_vertices_of(const Polygon &polygon_temp, double epsilon=0.0)
relocate to closest vertex if w/in epsilon of some vertex (of polygon_temp)
Definition: visilibity.cpp:280
Point projection_onto_vertices_of(const Polygon &polygon_temp) const
closest vertex of polygon_temp
Definition: visilibity.cpp:124
Point projection_onto(const Line_Segment &line_segment_temp) const
closest Point on line_segment_temp
Definition: visilibity.cpp:61
Point()
default
Definition: visilibity.hpp:133
bool is_endpoint_of(const Line_Segment &line_segment_temp, double epsilon=0.0) const
true iff w/in epsilon of some endpoint of line_segment_temp
Definition: visilibity.cpp:270
void set_x(double x_temp)
change x coordinate
Definition: visilibity.hpp:290
double x() const
get x coordinate
Definition: visilibity.hpp:141
Point in the plane packaged together with polar coordinates w.r.t. specified origin.
Definition: visilibity.hpp:779
Polar_Point()
default
Definition: visilibity.hpp:787
Point polar_origin() const
origin of the polar coordinate system in which the point is represented
Definition: visilibity.hpp:803
Angle bearing() const
bearing from polar origin w.r.t. direction parallel to x-axis
Definition: visilibity.hpp:808
void set_range(double range_temp)
set range
Definition: visilibity.cpp:976
void set_bearing_to_2pi()
set bearing Angle data to 2*M_PI
Definition: visilibity.hpp:847
void set_y(double y_temp)
set y
Definition: visilibity.cpp:972
void set_x(double x_temp)
set x
Definition: visilibity.cpp:968
void set_polar_origin(const Point &polar_origin_temp)
set the origin of the polar coordinate system
Definition: visilibity.cpp:964
double range() const
Definition: visilibity.hpp:806
void set_bearing(const Angle &bearing_temp)
set bearing
Definition: visilibity.cpp:982
simple polygon in the plane represented by list of vertices
Definition: visilibity.hpp:1065
void push_back(const Point &vertex_temp)
push a Point onto the back of the vertex list
Definition: visilibity.hpp:1187
bool is_in_standard_form() const
true iff lexicographically smallest vertex is first in the list of vertices representing the Polygon
Definition: visilibity.cpp:1308
void set_vertices(const std::vector< Point > &vertices_temp)
set vertices using STL vector of Points
Definition: visilibity.hpp:1183
unsigned r() const
reflex vertex count (nonconvex vertices)
Definition: visilibity.cpp:1267
unsigned n() const
vertex count
Definition: visilibity.hpp:1100
const Point & operator[](unsigned i) const
access with automatic wrap-around in forward direction
Definition: visilibity.hpp:1093
Point centroid() const
Polygon's centroid (center of mass)
Definition: visilibity.cpp:1336
bool is_simple(double epsilon=0.0) const
true iff Polygon is (epsilon) simple
Definition: visilibity.cpp:1285
void eliminate_redundant_vertices(double epsilon=0.0)
eliminates vertices which are (epsilon) - colinear with their respective neighbors
Definition: visilibity.cpp:1463
void enforce_standard_form()
enforces that the lexicographically smallest vertex is first in the list of vertices representing the...
Definition: visilibity.cpp:1443
double area() const
Definition: visilibity.cpp:1326
void reverse()
reverse (cyclic) order of vertices
Definition: visilibity.cpp:1508
Bounding_Box bbox() const
box which fits snugly around the Polygon
Definition: visilibity.cpp:1374
double boundary_length() const
perimeter length
Definition: visilibity.cpp:1316
void clear()
erase all vertices
Definition: visilibity.hpp:1189
Polygon()
default to empty
Definition: visilibity.hpp:1070
Point & operator[](unsigned i)
access with automatic wrap-around in forward direction
Definition: visilibity.hpp:1181
double diameter() const
Euclidean diameter.
Definition: visilibity.cpp:1360
void write_to_file(const std::string &filename, int fios_precision_temp=FIOS_PRECISION)
write list of vertices to *.polygon file
Definition: visilibity.cpp:1428
oriented polyline in the plane represented by list of vertices
Definition: visilibity.hpp:977
void pop_back()
delete a vertex to the back (end) of the list
Definition: visilibity.hpp:1024
Point & operator[](unsigned i)
raw access
Definition: visilibity.hpp:1018
double length() const
Euclidean length of the Polyline.
Definition: visilibity.cpp:1132
unsigned size() const
vertex count
Definition: visilibity.hpp:998
bool operator==(const VisiLibity::Polyline &other)
Compare two Polylines.
Definition: visilibity.hpp:1047
Point operator[](unsigned i) const
raw access
Definition: visilibity.hpp:996
void reverse()
reverse order of vertices
Definition: visilibity.cpp:1223
void clear()
erase all points
Definition: visilibity.hpp:1020
Polyline()
default to empty
Definition: visilibity.hpp:982
Polyline(const std::vector< Point > &vertices_temp)
construct from vector of vertices
Definition: visilibity.hpp:984
double diameter() const
Euclidean diameter.
Definition: visilibity.cpp:1139
void append(const Polyline &polyline)
append the points from another polyline
Definition: visilibity.cpp:1231
void push_back(const Point &point_temp)
add a vertex to the back (end) of the list
Definition: visilibity.hpp:1022
void set_vertices(const std::vector< Point > &vertices_temp)
reset the whole list of vertices at once
Definition: visilibity.hpp:1026
void eliminate_redundant_vertices(double epsilon=0.0)
eliminates vertices which are (epsilon) - colinear with their respective neighbors
Definition: visilibity.cpp:1181
ray in the plane represented by base Point and bearing Angle
Definition: visilibity.hpp:909
Ray()
default
Definition: visilibity.hpp:917
void set_base_point(const Point &point_temp)
set base point
Definition: visilibity.hpp:932
Point base_point() const
get base point
Definition: visilibity.hpp:927
Ray(Point base_point_temp, Angle bearing_temp)
Definition: visilibity.hpp:920
void set_bearing(const Angle &angle_temp)
set bearing
Definition: visilibity.hpp:934
Angle bearing() const
get bearing
Definition: visilibity.hpp:929
Utilities for writing shortest path VisiLibity unit tests.
Definition: visilibity.hpp:2110
static bool validate(const VisiLibity::Environment &environment, const double epsilon, const VisiLibity::Guards &guards)
Definition: visilibity.cpp:3178
Utilities for writing VisiLibity unit tests.
Definition: visilibity.hpp:2068
static void set_output_precision()
Definition: visilibity.cpp:3269
static std::vector< Point > make_point_vector(std::array< double, N > vertices)
Definition: visilibity.hpp:2094
static void seed_random()
Definition: visilibity.cpp:3277
visibility graph of points in an Environment, represented by adjacency matrix
Definition: visilibity.hpp:1914
unsigned n() const
total number of vertices in corresponding Environment
Definition: visilibity.hpp:2011
virtual ~Visibility_Graph()
destructor
Definition: visilibity.cpp:3156
Visibility_Graph()
default to empty
Definition: visilibity.hpp:1918
bool operator()(unsigned i1, unsigned j1, unsigned i2, unsigned j2) const
raw access to adjacency matrix data
Definition: visilibity.cpp:3103
Visibility_Graph & operator=(const Visibility_Graph &visibility_graph_temp)
assignment operator
Definition: visilibity.cpp:3119
Definition: visilibity.hpp:1849
Definition: visilibity.hpp:1812
visibility polygon of a Point in an Environment or Polygon
Definition: visilibity.hpp:1756
Visibility_Polygon()
default to empty
Definition: visilibity.hpp:1760
Point observer() const
location of observer which induced the visibility polygon
Definition: visilibity.hpp:1796
VisiLibity's sole namespace.
Definition: visilibity.hpp:73
bool operator!=(const Point &point1, const Point &point2)
True iff Points' coordinates are not identical.
Definition: visilibity.cpp:315
bool operator<(const Point &point1, const Point &point2)
compare lexicographic order of points
Definition: visilibity.cpp:319
bool operator==(const Point &point1, const Point &point2)
True iff Points' coordinates are identical.
Definition: visilibity.cpp:312
bool operator<=(const Point &point1, const Point &point2)
compare lexicographic order of points
Definition: visilibity.cpp:342
bool intersect_proper(const Line_Segment &line_segment1, const Line_Segment &line_segment2, double epsilon=0.0)
true iff line segments intersect properly w/in epsilon, false if either line segment has size 0
Definition: visilibity.cpp:732
Point operator-(const Point &point1, const Point &point2)
vector subtraction of Points
Definition: visilibity.cpp:351
double geodesic_direction(const Angle &angle1, const Angle &angle2)
1.0 => geodesic path from angle1 to angle2 is couterclockwise, -1.0 => clockwise
Definition: visilibity.cpp:926
bool operator>(const Point &point1, const Point &point2)
compare lexicographic order of points
Definition: visilibity.cpp:328
const int FIOS_PRECISION
floating-point display precision.
Definition: visilibity.hpp:95
double boundary_distance(const Point &point_temp, const Polygon &polygon_temp)
Euclidean distance between a Point and a Polygon's boundary.
Definition: visilibity.cpp:416
double cross(const Point &point1, const Point &point2)
cross product (signed) magnitude treats the Points as vectors
Definition: visilibity.cpp:366
bool operator>=(const Point &point1, const Point &point2)
compare lexicographic order of points
Definition: visilibity.cpp:337
double geodesic_distance(const Angle &angle1, const Angle &angle2)
geodesic distance in radians between Angles
Definition: visilibity.cpp:916
bool equivalent(Line_Segment line_segment1, Line_Segment line_segment2, double epsilon=0)
true iff line segments' endpoints match up w/in a (closed) epsilon ball of each other,...
Definition: visilibity.cpp:663
Line_Segment intersection(const Line_Segment &line_segment1, const Line_Segment &line_segment2, double epsilon=0.0)
intersection of Line_Segments
Definition: visilibity.cpp:767
bool intersect(const Line_Segment &line_segment1, const Line_Segment &line_segment2, double epsilon=0.0)
true iff the Euclidean distance between Line_Segments is no greater than epsilon, false if either lin...
Definition: visilibity.cpp:723
Point operator+(const Point &point1, const Point &point2)
vector addition of Points
Definition: visilibity.cpp:348
double uniform_random_sample(double lower_bound, double upper_bound)
get a uniform random sample from an (inclusive) interval on the real line
Definition: visilibity.cpp:48
std::ostream & operator<<(std::ostream &outs, const Point &point_temp)
print a Point
Definition: visilibity.cpp:451
double distance(const Point &point1, const Point &point2)
Euclidean distance between Points.
Definition: visilibity.cpp:373
rectangle with sides parallel to the x- and y-axes
Definition: visilibity.hpp:120
Definition: visilibity.hpp:1804