\( \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.12.1 - 2D Arrangements
ArrangementTraits_2 Concept Reference

Definition

The concept ArrangementTraits_2 allows the construction of arrangement of general planar curves. Models of this concept are used by the free CGAL::insert() functions of the arrangement package and by the CGAL::Arrangement_with_history_2 class.

A model of this concept must define the nested Curve_2 type, which represents a general planar curve that is not necessarily \( x\)-monotone and is not necessarily connected. Such curves are eventually subdivided into \( x\)-monotone subcurves and isolated points (represented by the Point_2 and X_monotone_curve_2 types, defined in the basic traits concept).

A model of the concept ArrangementTraits_2 that handles arbitrary curves, which are always \( x\)-monotone, such as a traits class that handles linear curves may define the nested types Curve_2 and X_monotone_curve_2 to be of equivalent types. Moreover, defining them as of equivalent types is advantageous, as it enables a generic simple implementation of the nested Functor Make_x_monotone_2.

On the other hand, a model of the ArrangementTraits_2 concept that handles arbitrary curves, which may be not \( x\)-monotone must define the Curve_2 and X_monotone_curve_2 nested types to be of different types to allow proper dispatching of the free functions that accept such curves, such as intsert().

Refines:
ArrangementXMonotoneTraits_2
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
ArrangementXMonotoneTraits_2
ArrangementLandmarkTraits_2

Types

typedef unspecified_type Curve_2
 models the concept ArrTraits::Curve_2.
 

Functor Types

typedef unspecified_type Make_x_monotone_2
 models the concept ArrTraits::MakeXMonotone_2.
 

Accessing Functor Objects

Make_x_monotone_2 make_x_monotone_2_object () const