ArrangementBasicTraits_2

Definition

The concept ArrangementBasicTraits_2 defines the minimal set of geometric predicates needed for the constrcution and maintenance of objects of the class Arrangement_2, as well as performing simple queries (such as point-location queries) on such arrangements.

A model of this concept must define nested Point_2 and X_monotone_curve_2 types, which represent planar points and continuous x-monotone curves (a vertical segment is also considered to be weakly x-monotone), respectively. The x-monotone curves are assumed to be pairwise disjoint in their interiors, so they do not intersect except at their endpoints.

The x-monotone curves may be unbounded, namely they may have unbounded ends that lie at infinity, or bounded, in which case their have finite endpoints are representable as Point_2 objects. An x-monotone curve may also have one unbounded end and one finite endpoint (e.g. a ray). If unbounded curves are supported, the requirements from the traits class are extended a bit, as described below. In particular, the traits class needs to support comparisons at infinity, where we interpret comparisons at infinity as follows: Suppose we wish to compare the y-position of the hyperbolas y1 = (1)/(x) and y2 = (2)/(x) at x = ∞; than since there exists x0 such that for each finite x > x0 we have y2(x) > y1(x) (in our case we can take x0 = 0), we say that y2 is above y1 at infinity. Similarly, when comparing the x-positions of the vertical line x = 0 and the xy-minimal end of parabola y = (1)/(x) for x > 0 (which has a vertical asymptote at x = 0), we define that the line lies to the left of the hyperbola. Namely, comparing curves at their unbounded ends should return the comparison result EQUAL only if the curves overlap.

Refines

DefaultConstructible, CopyConstructible, Assignable

Types

ArrangementBasicTraits_2::Point_2
models the concept ArrTraits::Point_2.

ArrangementBasicTraits_2::X_monotone_curve_2
models the concept ArrTraits::XMonotoneCurve_2.

Tags

ArrangementBasicTraits_2::Has_left_category
indicates whether the nested functor Compare_at_x_left_2 is provided.


ArrangementBasicTraits_2::Has_boundary_category
indicates whether the traits class supports unbounded curves.

Functor Types

ArrangementBasicTraits_2::Compare_x_2
models the concept ArrTraits::CompareX_2. If the traits class supports unbounded curves (i.e., the Has_boundary_category tag is defined as Tag_true), then the type models the concept ArrTraits::BoundaryCompareX_2.

ArrangementBasicTraits_2::Compare_xy_2
models the concept ArrTraits::CompareXy_2.

ArrangementBasicTraits_2::Boundary_in_x_2
models the concept ArrTraits::BoundaryInX_2. Required only if the traits class supports unbounded curves (the Has_boundary_category tag is defined as Tag_true).

ArrangementBasicTraits_2::Boundary_in_y_2
models the concept ArrTraits::BoundaryInY_2. Required only if the traits class supports unbounded curves (the Has_boundary_category tag is defined as Tag_true).

ArrangementBasicTraits_2::Construct_min_vertex_2
models the concept ArrTraits::ConstructMinVertex_2.

ArrangementBasicTraits_2::Construct_max_vertex_2
models the concept ArrTraits::ConstructMaxVertex_2.

ArrangementBasicTraits_2::Is_vertical_2
models the concept ArrTraits::IsVertical_2.

ArrangementBasicTraits_2::Compare_y_at_x_2
models the concept ArrTraits::CompareYAtX_2. If the traits class supports unbounded curves (i.e., the Has_boundary_category tag is defined as Tag_true), then the type models the concept ArrTraits::BoundaryCompareYAtX_2.

ArrangementBasicTraits_2::Compare_y_at_x_left_2
models the concept ArrTraits::CompareYAtXLeft_2. Required only if the Has_left_category tag is defined as Tag_true.

ArrangementBasicTraits_2::Compare_y_at_x_right_2
models the concept ArrTraits::CompareYAtXRight_2.

ArrangementBasicTraits_2::Equal_2
models the concept ArrTraits::Equal_2.

Accessing Functor Objects

Compare_x_2 traits.compare_x_2_object ()
Compare_xy_2 traits.compare_xy_2_object ()
Boundary_in_x_2 traits.boundary_in_x_2_object ()
Boundary_in_y_2 traits.boundary_in_y_2_object ()
Construct_min_vertex_2 traits.construct_min_vertex_2_object ()
Construct_max_vertex_2 traits.construct_max_vertex_2_object ()
Is_vertical_2 traits.is_vertical_2_object ()
Compare_y_at_x_2 traits.compare_y_at_x_2_object ()
Compare_y_at_x_left_2 traits.compare_y_at_x_left_2_object ()
Compare_y_at_x_right_2 traits.compare_y_at_x_right_2_object ()
Equal_2 traits.equal_2_object ()

Has Models

CGAL::Arr_segment_traits_2<Kernel>
CGAL::Arr_non_caching_segment_basic_traits_2<Kernel>
CGAL::Arr_non_caching_segment_traits_2<Kernel>
CGAL::Arr_polyline_traits_2<SegmentTraits>
CGAL::Arr_circle_segment_traits_2<Kernel>
CGAL::Arr_conic_traits_2<RatKernel,AlgKernel,NtTraits>
CGAL::Arr_rational_arc_traits_2<AlgKernel,NtTraits>
CGAL::Arr_Bezier_curve_traits_2<RatKernel,AlgKernel,NtTraits>
CGAL::Arr_curve_data_traits_2<Tr,XData,Mrg,CData,Cnv>
CGAL::Arr_consolidated_curve_data_traits_2<Traits,Data>