Concept

ArrangementXMonotoneTraits_2

Definition

The concept ArrangementXMonotoneTraits_2 refines the basic arrangement-traits concept. A model of this concept is able to handle x-monotone curves that intersect in their interior (and points that coincide with curve interiors). This is necessary for constructing arrangements of sets of intersecting x-monotone curves.

As the resulting structure, represented by the Arrangement_2 class, stores pairwise interior-disjoint curves, the input curves are split at the intersection points before being inserted into the arrangement. A model of this refined concept therefore needs to compute the intersections (and possibly overlaps) between two x-monotone curves and to support curve splitting.

Refines

ArrangementBasicTraits_2

Types

ArrangementXMonotoneTraits_2::Multiplicity
the multiplicity type.

Tags

ArrangementXMonotoneTraits_2::Has_merge_category
indicates whether the nested functors Are_mergeable_2 and Merge_2 are provided.

Functor Types

ArrangementXMonotoneTraits_2::Intersect_2
models the concept ArrTraits::Intersect_2.

ArrangementXMonotoneTraits_2::Split_2
models the concept ArrTraits::Split_2.

The two following function-object types are optional. If they are supported, the Has_merge_category tag should be defined as Tag_true (and Tag_false otherwise.

ArrangementXMonotoneTraits_2::Are_mergeable_2
models the concept ArrTraits::AreMergeable_2.

ArrangementXMonotoneTraits_2::Merge_2
models the concept ArrTraits::Merge_2.

Accessing Functor Objects

Intersect_2 traits.intersect_2_object () const
Split_2 traits.split_2_object () const

The two following methods are optional. If they are supported, the Has_merge_category tag should be defined as Tag_true (and Tag_false otherwise.

Are_mergeable_2 traits.are_mergeable_2_object () const
Merge_2 traits.merge_2_object () const

Has Models

CGAL::Arr_segment_traits_2<Kernel>
CGAL::Arr_non_caching_segment_traits_2<Kernel>
CGAL::Arr_linear_traits_2<Kernel>
CGAL::Arr_polyline_traits_2<SegmentTraits>
CGAL::Arr_circle_segment_traits_2<Kernel>
CGAL::Arr_line_arc_traits_2<CircularKernel>
CGAL::Arr_circular_arc_traits_2<CircularKernel>
CGAL::Arr_circular_line_arc_traits_2<CircularKernel>
CGAL::Arr_conic_traits_2<RatKernel,AlgKernel,NtTraits>
CGAL::Arr_rational_function_traits_2<AlgebraicKernel_d_1>
CGAL::Arr_Bezier_curve_traits_2<RatKernel,AlgKernel,NtTraits>
CGAL::Arr_algebraic_segment_traits_2<Coefficient>
CGAL::Arr_curve_data_traits_2<Tr,XData,Mrg,CData,Cnv>
CGAL::Arr_consolidated_curve_data_traits_2<Traits,Data>

See Also

ArrangementBasicTraits_2