Navigation: Up, Table of Contents, Bibliography, Index, Title Page

Types

Arr_traits::Point
same as the planar map traits' Point.


Arr_traits::X_curve
same as the planar map traits' X_curve.


Arr_traits::Curve
curve type, this type should be syntactically identical to the X_curve type (i.e., it should be the same type). However, semantically it differs from the X_curve in that it is not necessarily x-monotone. In the following methods when we require an X_curve as a parameter, we assume that the curve is x-monotone.

bool arr_traits.is_x_monotone ( Curve c)
returns true if c is an x-monotone curve.

void
arr_traits.make_x_monotone ( Curve cv,
list<X_curve>& l)
cuts cv into x-monotone subcurves and stores them in l. The order in which they are inserted into l defines their order in the hierarchy tree.

X_curve arr_traits.curve_flip ( X_curve cv)
returns the X_curve that is the same as cv but with opposite orientation.

void
arr_traits.curve_split ( X_curve cv,
X_curve& c1,
X_curve& c2,
Point split_pt)
splits cv at split_pt and assigns the resulting two curves to c1 and c2.
Precondition: split_pt is on cv.
Precondition: split_pt is not an endpoint of cv.

bool
arr_traits.do_intersect_to_right ( X_curve c1,
X_curve c2,
Point pt)
returns true if c1 and c2 intersect to the right of the point pt. Intersection to the right of pt is defined as an intersection which is lexicographically strictly to the right of pt (i.e., an intersection above or to the right of pt but not on pt).

bool
arr_traits.nearest_intersection_to_right ( X_curve c1,
X_curve c2,
Point pt,
Point& p1,
Point& p2)
finds the nearest intersection point to the right of pt. Nearest is defined as the one lexicographically closest to pt not including pt itself. If the intersection of c1 and c2 to the right of pt is an X_curve (i.e., there is an overlapping subcurve to the right of pt), then p1 will hold the source point of the intersection and p2 will hold its target point. Otherwise p1 and p2 are identical. In the case of an overlap we regard the intersection to the right as the open curve between p1 and p2. This means that if the overlapping subcurve contains pt either p1 or p2 will be equal to pt, this is the only case in which this can happen. If c1 and c2 do not intersect to the right of pt the function returns false.

bool arr_traits.curves_overlap ( X_curve cv1, X_curve cv2)
returns true if cv1 and cv2 overlap in a one-dimensional subcurve (i.e., not in a finite number of points), otherwise returns false.


Next: Class declaration of Arr_leda_segment_exact_traits
Navigation: Up, Table of Contents, Bibliography, Index, Title Page
The GALIA project. Jan 18, 2000.