Class

CGAL::Arr_trapezoid_ric_point_location<Arrangement>

Definition

The Arr_trapezoid_ric_point_location<Arrangement> class implements the incremental randomized algorithm introduced by Mulmuley [Mul90] as presented by Seidel [Sei91] (see also [dBvKOS00, 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 [HKH12]. 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.

#include <CGAL/Arr_trapezoid_ric_point_location.h>

Is Model for the Concepts

ArrangementPointLocation_2
ArrangementVerticalRayShoot_2

Creation

Arr_trapezoid_ric_point_location<Arrangement> pl ( bool with_guarantees = true);
If with_guarantees is set to true, the cunstruction 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.


Arr_trapezoid_ric_point_location<Arrangement> pl ( Arrangement arr, bool with_guarantees = true);
Constructs a point location search structure for the given arrangement. If with_guarantees is set to true, the cunstruction 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.

Modifiers

void pl.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.