\( \newcommand{\E}{\mathrm{E}} \) \( \newcommand{\A}{\mathrm{A}} \) \( \newcommand{\R}{\mathrm{R}} \) \( \newcommand{\N}{\mathrm{N}} \) \( \newcommand{\Q}{\mathrm{Q}} \) \( \newcommand{\Z}{\mathrm{Z}} \) \( \def\ccSum #1#2#3{ \sum_{#1}^{#2}{#3} } \def\ccProd #1#2#3{ \sum_{#1}^{#2}{#3} }\)

CGAL 4.3 - 2D Arrangements

All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Groups Pages
List of all members
ArrangementVerticalRayShoot_2 Concept Reference
Concepts

## Definition

A model of the `ArrangementVerticalRayShoot_2` concept can answer vertical ray-shooting queries on an arrangement attached to it. Namely, given a `Arrangement_2::Point_2` object, representing a point in the plane, it returns the arrangement feature (edge or vertex) that lies strictly above it (or below it). By "strictly" we mean that if the query point lies on an arrangement edge (or on an arrangement vertex) this edge will not be the query result, but the feature lying above or below it. (An exception to this rule is the degenerate case where the query point lies in the interior of a vertical edge.) Note that it may happen that the query point lies above the upper envelope (or below the lower envelope) of the arrangement, and the vertical ray emanating from the query point goes to infinity without hitting any arrangement feature on its way. In this case the unbounded face is returned.

A Note on Backwards Compatibility
The `ray_shoot_up` and `ray_shoot_down` member functions used to return `CGAL::Object` up to CGAL version 4.2. Starting with CGAL version 4.3 the return type is determined by a metafunction. To preserve backwards compatibility `CGAL::Object` can be constructed from the new return types implicitly, but switching to the new style is recommended. To enable the old style without any overhead, the macro `CGAL_ARR_POINT_LOCATION_VERSION` can be defined to 1 before any CGAL header is included.

Has Models:

  `CGAL::Arr_naive_point_location<Arrangement>`

  `CGAL::Arr_walk_along_line_point_location<Arrangement>`

  `CGAL::Arr_trapezoid_ric_point_location<Arrangement>`

  `CGAL::Arr_landmarks_point_location<Arrangement,Generator>`

See Also
  `CGAL::Arr_naive_point_location<Arrangement>`
  `CGAL::Arr_walk_along_line_point_location<Arrangement>`
  `CGAL::Arr_trapezoid_ric_point_location<Arrangement>`
  `CGAL::Arr_landmarks_point_location<Arrangement,Generator>`
  `CGAL::Arr_point_location_result<Arrangement>`
  `CGAL_ARR_POINT_LOCATION_VERSION`

## Types
typedef unspecified_type | Arrangement_2
| the associated arrangement type.
typedef unspecified_type | Point_2
| equivalent to `Arrangement_2::Point_2`.

## Creation
| ArrangementVerticalRayShoot_2 ()
| default constructor.
| ArrangementVerticalRayShoot_2 (const Arrangement_2 &arr)
| constructs a ray-shooting object `rs` attached to the given arrangement `arr`.

## Query Functions
Arr_point_location_result < Arrangement_2 >::Type | ray_shoot_up (const Point_2 &q) const
| locates the arrangement feature that is first hit by an upward-directed vertical ray emanating from the query point `q`, and returns a handle for this feature. More...
Arr_point_location_result < Arrangement_2 >::Type | ray_shoot_down (const Point_2 &q) const
| locates the arrangement feature that is first hit by a downward-directed vertical ray emanating from the query point `q`, and returns a handle for this feature. More...

## Operations
void | attach (const Arrangement_2 &arr)
| attaches `rs` to the given arrangement `arr`.
void | detach ()
| detaches `rs` from the arrangement it is currently attached to.

## Member Function Documentation

Arr_point_location_result<Arrangement_2>::Type ArrangementVerticalRayShoot_2::ray_shoot_down | ( | const Point_2 & | q) |  | const

locates the arrangement feature that is first hit by a downward-directed vertical ray emanating from the query point `q`, and returns a handle for this feature.

The function returns a discriminated union container of the following bounded types:

- `Arrangement_2::Halfedge_const_handle`, in case the vertical ray hits an arrangement edge;
- `Arrangement_2::Vertex_const_handle`, in case the vertical ray hits an arrangement vertex.
- `Arrangement_2::Face_const_handle` for the unbounded arrangement face, in case `q` lies below the lower envelope of the arrangement.

Precondition
  `rs` is attached to a valid arrangement instance.

Arr_point_location_result<Arrangement_2>::Type ArrangementVerticalRayShoot_2::ray_shoot_up | ( | const Point_2 & | q) |  | const

locates the arrangement feature that is first hit by an upward-directed vertical ray emanating from the query point `q`, and returns a handle for this feature.

The function returns a discriminated union container of the following bounded types:

- `Arrangement_2::Halfedge_const_handle`, in case the vertical ray hits an arrangement edge;
- `Arrangement_2::Vertex_const_handle`, in case the vertical ray hits an arrangement vertex.
- `Arrangement_2::Face_const_handle` for the unbounded arrangement face, in case `q` lies above the upper envelope of the arrangement.

Precondition
  `rs` is attached to a valid arrangement instance.