| CGAL 6.1 - 2D Visibility
    | 
A model of the Visibility_2 concept can be attached to an Arrangement_2 instance to answer visibility queries within the faces of this arrangement. 
| Types | |
| typedef unspecified_type | Arrangement_2 | 
| The arrangement type of the input. | |
| typedef Arrangement_2::Point_2 | Point_2 | 
| The 2D point type used for the queries. | |
| typedef Arrangement_2::Face_const_handle | Face_const_handle | 
| The face handle type of the input arrangement. | |
| typedef Arrangement_2::Halfedge_const_handle | Halfedge_const_handle | 
| The halfedge handle type of the input arrangement. | |
| Tags | |
| typedef unspecified_type | Regularization_category | 
| identifies whether the regularized visibility area is computed (either #Tag_trueor#Tag_false). | |
| typedef unspecified_type | Supports_general_polygon_category | 
| identifies whether general polygons (with holes) are supported (either #Tag_trueor#Tag_false). | |
| typedef unspecified_type | Supports_simple_polygon_category | 
| identifies whether simple polygons are supported (either #Tag_trueor#Tag_false). | |
| Constructors | |
| Visibility_2 () | |
| Default constructor creates an empty Visibility_2object that is not attached to any arrangement yet. | |
| Visibility_2 (const Arrangement_2 &arr) | |
| Constructs a Visibility_2object that is attached toarr. | |
| Functions | |
| bool | is_attached () const | 
| Returns whether an arrangement is attached to the visibility object. | |
| void | attach (const Arrangement_2 &arr) | 
| Attaches the given arrangement arrto the visibility object. | |
| void | detach () | 
| Detaches the arrangement from the visibility object it is currently attached to. | |
| const Arrangement_2 & | arrangement_2 () const | 
| Access to the attached arrangement. | |
| template<typename VisibilityArrangement_2 > | |
| Visibility_arrangement_2::Face_handle | compute_visibility (const Point_2 &q, const Face_const_handle f, VisibilityArrangement_2 &out_arr) const | 
| Computes the visibility region for the given query point qin the face \( f \) of the arrangement that is attached to the visibility object. | |
| template<typename VisibilityArrangement_2 > | |
| Visibility_arrangement_2::Face_handle | compute_visibility (const Point_2 &q, const Halfedge_const_handle e, Visibility_arrangement_2 &out_arr) const | 
| Computes the visibility region in e->face()for the given query pointqwhich must be located one. | |
identifies whether general polygons (with holes) are supported (either #Tag_true or #Tag_false). 
A general polygon is represented by a face \( f \) with no isolated vertex and any edge of \( f \) separates \( f \) from another face. Note that this allows \( f \) to touch a vertex from several sides.
identifies whether simple polygons are supported (either #Tag_true or #Tag_false). 
A simple polygon is represented by a face \( f \) with no holes, no isolated vertex and any edge of \( f \) separates \( f \) from another face. Note that this allows \( f \) to touch a vertex from several sides.
| void Visibility_2::attach | ( | const Arrangement_2 & | arr | ) | 
Attaches the given arrangement arr to the visibility object. 
In case the object is already attached to another arrangement, the visibility object gets detached before being attached to arr. 
| Visibility_arrangement_2::Face_handle Visibility_2::compute_visibility | ( | const Point_2 & | q, | 
| const Face_const_handle | f, | ||
| VisibilityArrangement_2 & | out_arr | ||
| ) | const | 
Computes the visibility region for the given query point q in the face \( f \) of the arrangement that is attached to the visibility object. 
The visibility region of q is stored in out_arr, that is, all features but the unbounded face of out_arr represent the visibility region.
| VisibilityArrangement_2 | is the type of the output arrangement representing the visibility polygon. It must be an instance of CGAL::Arrangement_2, where itsCGAL::Arrangement_2::Traits_2must be mutual convertible toVisibilityArrangement_2::Traits_2. | 
| q | is the query point | 
| f | is the face of the arrangement in which the visibility region is computed | 
| out_arr | is the output arrangement | 
f is a face of this->arrangement_2() q is in the interior of the given face f out_arr that represents interior of the visibility region | Visibility_arrangement_2::Face_handle Visibility_2::compute_visibility | ( | const Point_2 & | q, | 
| const Halfedge_const_handle | e, | ||
| Visibility_arrangement_2 & | out_arr | ||
| ) | const | 
Computes the visibility region in e->face() for the given query point q which must be located on e. 
If q is an interior point of e, the computed visibility region is restricted to the side indicated by the halfedge e. If q is an endpoint of e, the visibility region is restricted by e and e->next(). The visibility region of q is stored in out_arr, that is, all features but the unbounded face of out_arr represent the visibility region.
| VisibilityArrangement_2 | is the type of the output arrangement representing the visibility polygon. It must be an instance of CGAL::Arrangement_2, where itsCGAL::Arrangement_2::Traits_2must be mutual convertible toVisibilityArrangement_2::Traits_2. | 
| q | is the query point | 
| e | the halfedge on which qis located | 
| out_arr | is the output arrangement | 
e is a halfedge of this->arrangement_2() q is on e q equals to e->target()->point() if q is an endpoint of e out_arr that represents the interior of the visibility region