\( \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.8 - 2D Arrangements

All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Groups Pages
List of all members
CGAL::Arr_trapezoid_ric_point_location< Arrangement > Class Template Reference
Point Location

`#include <CGAL/Arr_trapezoid_ric_point_location.h>`

## Definition

The `Arr_trapezoid_ric_point_location` class implements the incremental randomized algorithm introduced by Mulmuley [8] as presented by Seidel [11] (see also [[3] Chapter 6). It subdivides each arrangement face to pseudo-trapezoidal cells, each of constant complexity, and constructs and maintains a linear-size search structure on top of these cells, such that each query can be answered in \( O(\log n)\) time, where \( n\) is the complexity of the arrangement.

Constructing the search structures takes \( O(n \log n)\) expected time and may require a small number of rebuilds [7]. Therefore attaching a trapezoidal point-location object to an existing arrangement may incur some overhead in running times. In addition, the point-location object needs to keep its auxiliary data structures up-to-date as the arrangement goes through structural changes. It is therefore recommended to use this point-location strategy for static arrangements (or arrangement that do not alter frequently), and when the number of issued queries is relatively large.

This strategy supports arbitrary subdivisions, including unbounded ones.

Is Model Of:

  `ArrangementPointLocation_2`

  `ArrangementVerticalRayShoot_2`

See Also
  `ArrangementPointLocation_2`
  `ArrangementVerticalRayShoot_2`
  `CGAL::Arr_point_location_result<Arrangement>`
  `CGAL_ARR_POINT_LOCATION_VERSION`

Examples:
  Arrangement_on_surface_2/vertical_ray_shooting.cpp.

## Creation
| Arr_trapezoid_ric_point_location (bool with_guarantees=true)
| If with_guarantees is set to true, the construction performs rebuilds in order to guarantee a resulting structure with linear size and logarithmic query time. More...
| Arr_trapezoid_ric_point_location (const Arrangement &arr, bool with_guarantees=true)
| Constructs a point location search structure for the given arrangement. More...

## Modifiers
void | with_guarantees (bool with_guarantees)
| If with_guarantees is set to true, the structure will guarantee linear size and logarithmic query time, that is, this function may cause a reconstruction of the data structure.

## Constructor & Destructor Documentation

template<typename Arrangement >

CGAL::Arr_trapezoid_ric_point_location< Arrangement >::Arr_trapezoid_ric_point_location | ( | bool | with_guarantees = `true`) |  |

If with_guarantees is set to true, the construction performs rebuilds in order to guarantee a resulting structure with linear size and logarithmic query time.

Otherwise the structure has expected linear size and expected logarithmic query time.

template<typename Arrangement >

CGAL::Arr_trapezoid_ric_point_location< Arrangement >::Arr_trapezoid_ric_point_location | ( | const Arrangement & | arr,
|  | bool | with_guarantees = `true`
| ) |  |

Constructs a point location search structure for the given arrangement.

If with_guarantees is set to true, the construction performs rebuilds in order to guarantee a resulting structure with linear size and logarithmic query time. Otherwise the structure has expected linear size and expected logarithmic query time.