CGAL 6.1 - 2D Visibility
|
#include <CGAL/Simple_polygon_visibility_2.h>
This class is a model of the concept Visibility_2
can answer visibility queries within a simple polygon with no holes.
This class implements the algorithm of B.Joe and R.B.Simpson [4]. The algorithm is a modification and extension of the linear time algorithm of Lee [5]. It computes the visibility region from a viewpoint that is in the interior or on the boundary of the polygon.
While scanning the boundary the algorithm uses a stack to manipulate the vertices, and ultimately yields the visibility region. For each scanned edge, at most 2 points are pushed onto the stack. Overall, at most 2 \( n \) points are pushed or popped. Thus, the time and space complexities of the algorithm are \(O(n)\)$ even in case of degeneracies such as needles, where \( n \) is the number of the vertices of the polygon.
Arrangement_2_ | is the type used to represent the input environment. It must be an instance of CGAL::Arrangement_2 , where its CGAL::Arrangement_2::Traits_2 must be an instance of CGAL::Arr_segment_traits_2 , or of CGAL::Arr_non_caching_segment_traits_2 . |
RegularizationCategory | indicates whether the output should be regularized. It can be specified by one of the following: #Tag_true or #Tag_false , where #Tag_false is the default value. |
Visibility_2
Types | |
typedef Arrangement_2 | Arrangement_2 |
The arrangement type is used for input. | |
Tags | |
typedef RegularizationCategory | Regularization_category |
identifies whether the regularized visibility area is computed (either #Tag_true or #Tag_false ). | |
typedef Tag_false | Supports_general_polygon_category |
See Visibility_2::Supports_general_polygon_category. | |
typedef Tag_true | Supports_simple_polygon_category |
See Visibility_2::Supports_simple_polygon_category. | |
Functions | |
void | attach (const Arrangement_2 &arr) |
Attaches the given arrangement to the visibility object. | |
typedef RegularizationCategory CGAL::Simple_polygon_visibility_2< Arrangement_2_, RegularizationCategory >::Regularization_category |
identifies whether the regularized visibility area is computed (either #Tag_true
or #Tag_false
).
void CGAL::Simple_polygon_visibility_2< Arrangement_2_, RegularizationCategory >::attach | ( | const Arrangement_2 & | arr | ) |
Attaches the given arrangement to the visibility object.
This operation takes \(O(1)\) as the class does no preprocessing.
In case the object is already attached to another arrangement, the visibility object gets detached before being attached to arr
.