CGAL 6.1.2 - 2D Arrangements: CGAL::Arr_algebraic_segment_traits_2< Coefficient >::Construct_x_monotone_segment_2 Class Reference

CGAL 6.1.2 - 2D Arrangements

Loading...
Searching...
No Matches
List of all members
CGAL::Arr_algebraic_segment_traits_2< Coefficient >::Construct_x_monotone_segment_2 Class Reference

`#include <CGAL/Arr_algebraic_segment_traits_2.h>`

## Object Creation Functors
template<typename OutputIterator >
OutputIterator | operator() (Curve_2 cv, Point_2 end_min, Point_2 end_max, OutputIterator oi)
| inserts a sequence of `X_monotone_curve_2` objects (terminal segments) into an output container given through an output iterator.
template<typename OutputIterator >
OutputIterator | operator() (Curve_2 cv, Point_2 p, Site_of_point site_of_p, OutputIterator out)
| inserts a sequence of `X_monotone_curve_2` objects into an output container given through an output iterator.
template<typename OutputIterator >
OutputIterator | operator() (Point_2 p, Point_2 q, OutputIterator out)
| inserts a sequence of `X_monotone_curve_2` objects into an output container given through an output iterator.

## Member Function Documentation

## ◆ operator()() [1/3]

template<typename Coefficient >
template<typename OutputIterator >

OutputIterator CGAL::Arr_algebraic_segment_traits_2< Coefficient >::Construct_x_monotone_segment_2::operator() | ( | Curve_2 | cv,
|  | Point_2 | end_min,
|  | Point_2 | end_max,
|  | OutputIterator | oi
| ) |  |

inserts a sequence of `X_monotone_curve_2` objects (terminal segments) into an output container given through an output iterator.

These terminal segments compose an \(x\)-monotone (or vertical) segment of a given curve that starts in `end_min`, and ends in `end_max`.

Parameters

  cv | The input curve.
  end_min | The starting point.
  end_max | The ending point.
  oi | The output iterator that points at the output container.

Returns
  The past-the-end iterator of the output container.

Precondition
  `end_min` must have a unique \(x\)-monotone segment to its right, or `end_max` must have a unique \(x\)-monotone segment to its left. Furthermore, `end_min` and `end_max` must be connected by an \(x\)-monotone segment of `cv`)

## ◆ operator()() [2/3]

template<typename Coefficient >
template<typename OutputIterator >

OutputIterator CGAL::Arr_algebraic_segment_traits_2< Coefficient >::Construct_x_monotone_segment_2::operator() | ( | Curve_2 | cv,
|  | Point_2 | p,
|  | Site_of_point | site_of_p,
|  | OutputIterator | out
| ) |  |

inserts a sequence of `X_monotone_curve_2` objects into an output container given through an output iterator.

These segments form an \(x\)-monotone (or vertical) segment of the curve `cv`.

If `site_of_p` == `POINT_IN_INTERIOR`, the maximal segment that contains `p` in its interior is returned .

If `site_of_p` == `MIN_ENDPOINT`, the segment that contains `p` as its left endpoint returned .

If `site_of_p` == `MAX_ENDPOINT`, the segment that contains `p` as its right endpoint returned .

Precondition
  If `site_of_p` == `POINT_IN_INTERIOR`, `p` must be an interior point of an \(x\)-monotone or a vertical segment.
  If `site_of_p` == `MIN_ENDPOINT`, `p` must either have a unique \(x\)-monotone segment to the right, or a vertical segment from `p` upwards.
  If `site_of_p` == `MAX_ENDPOINT`, `p` must either have a unique \(x\)-monotone segment to the left, or a vertical segment from `p` downwards.

## ◆ operator()() [3/3]

template<typename Coefficient >
template<typename OutputIterator >

OutputIterator CGAL::Arr_algebraic_segment_traits_2< Coefficient >::Construct_x_monotone_segment_2::operator() | ( | Point_2 | p,
|  | Point_2 | q,
|  | OutputIterator | out
| ) |  |

inserts a sequence of `X_monotone_curve_2` objects into an output container given through an output iterator.

These segments form a straight-line segment connecting the points `p` and `q`. If `p` and `q` share the same \(x\)-coordinate, the constructed vertical segment consists of only one `X_monotone_curve_2` object and can be computed efficiently. In the non-vertical case, the construction is only possible if `p` and `q` have both rational \(x\)- and \(y\)-coordinates.

Precondition
  `p` must not be equal to `q`.