Concept

ArrangementVerticalRayShoot_2

Definition

A model of the ArrangementVerticalRayShoot_2 concept can be attached to an Arrangement_2 instance and answer vertical ray-shooting queries on this arrangement. 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 situation 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, so that the vertical ray emanating from it may go to infinity without hitting any arrangement feature on its way. In this case the unbounded face is returned.

Types

ArrangementVerticalRayShoot_2::Arrangement_2
the associated arrangement type.


ArrangementVerticalRayShoot_2::Point_2
equivalent to Arrangement_2::Point_2.

Creation

ArrangementVerticalRayShoot_2 rs;
default constructor.


ArrangementVerticalRayShoot_2 rs ( Arrangement_2 arr);
constructs a ray-shooting object rs attached to the given arrangement arr.

Query Functions

Object rs.ray_shoot_up ( 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 an Object instance that is a wrapper for one of the following 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.

Object rs.ray_shoot_down ( 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 an Object instance that is a wrapper for one of the following 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.

Operations

void rs.attach ( Arrangement_2 arr) attaches rs to the given arrangement arr.

void rs.detach () detaches rs from the arrangement it is currently attached to.

Has Models

Arr_naive_point_location<Arrangement>
Arr_walk_along_a_line_point_location<Arrangement>
Arr_trapezoid_ric_point_location<Arrangement>
Arr_landmarks_point_location<Arrangement,Generator>