A model of this concept must define nested Point_2 and X_monotone_curve_2 types, which represent planar points and continuous $$xmonotone curves (a vertical segment is also considered to be weakly $$xmonotone), respectively. The $$xmonotone curves are assumed to be pairwise disjoint in their interiors, so they do not intersect except at their endpoints.
The $$xmonotone 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 $$xmonotone 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 $$yposition of the hyperbolas $$y_{1} = (1)/(x) and $$y_{2} = (2)/(x) at $$x = ; than since there exists $$x_{0} such that for each finite $$x > x_{0} we have $$y_{2}(x) > y_{1}(x) (in our case we can take $$x_{0} = 0), we say that $$y_{2} is above $$y_{1} at infinity. Similarly, when comparing the $$xpositions of the vertical line $$x = 0 and the $$xyminimal 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.
 
models the concept ArrTraits::Point_2.
 
 
models the concept ArrTraits::XMonotoneCurve_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.
 
 
models the concept ArrTraits::CompareXy_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).
 
 
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).
 
 
models the concept ArrTraits::ConstructMinVertex_2.
 
 
models the concept ArrTraits::ConstructMaxVertex_2.
 
 
models the concept ArrTraits::IsVertical_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.
 
 
models the concept ArrTraits::CompareYAtXLeft_2.
Required only if the Has_left_category tag is defined as
Tag_true.
 
 
models the concept ArrTraits::CompareYAtXRight_2.
 
 
models the concept ArrTraits::Equal_2.














 

 







 

 

