CGAL 4.7 - 2D Arrangements: CGAL::Arr_polyline_traits_2< SegmentTraits_2 >::Curve_2< Segment_type_T, Point_type_T > Class Template Reference

\( \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.7 - 2D Arrangements

All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Groups Pages
List of all members
CGAL::Arr_polyline_traits_2< SegmentTraits_2 >::Curve_2< Segment_type_T, Point_type_T > Class Template Reference

`#include <CGAL/Arr_polyline_traits_2.h>`

## Definition

The `Curve_2` type nested in the `Arr_polyline_traits_2` represents general continuous piecewise-linear curves (a polyline can be self-intersecting) and support their construction from range of segments.

Construction of polylines in various ways is supported using the construction functors. It is strongly recommended to avoid construction of `Curve_2` objects directly and prefer the usage of the construction functors. The type `Curve_2` has two template parameters, namely `Segment_type_T` and `Point_type_T`, which are `SegmentTraits_2::Curve_2` and `SegmentTraits_2::Point_2` types. Thus, in general, the segments that a `Curve_2` instance comprises could be either \(x\)-monotone or not!

The copy and default constructor as well as the assignment operator are provided for polyline curves. In addition, an `operator<<` for the curves is defined for standard output streams, and an `operator>>` for the curves is defined for standard input streams.

## Types

typedef std::vector< Segment_2 > | Segments_container
| The container of the segments that comprises the polyline.
typedef Segments_container::size_type | Segments_size_type
| The size of the container that comprises the polylines.
typedef unspecified_type | const_iterator
typedef unspecified_type | const_reverse_iterator
typedef unspecified_type | Segment_const_iterator
| A bidirectional constant iterator that allows traversing the segments the comprise the polyline.
typedef unspecified_type | Segment_const_reverse_iterator
| A bidirectional constant iterator that allows traversing the segments the comprise the polyline.

## Creation

| Curve_2 ()
| Default constructor that constructs an empty polyline.
| Curve_2 (const Segment_2 seg)
| Construct a polyline from one segment.
template<typename InputIterator >
| Curve_2 (Iterator first, Iterator last)
| Construct a polyline defined by the given range of segments `[first, last)` (the value-type of `InputIterator` must be `SegmentTraits_2::Curve_2`. More...

## Access Functions

unsigned_int | points () const
const_iterator | begin () const
Segment_const_iterator | begin_segments () const
| Obtain an iterator pointing at the first segment of the polyline.
const_iterator | end () const
Segment_const_iterator | end_segments () const
| Obtain an iterator pointing at the past-the-end segment of the polyline.
const_iterator | rbegin () const
Segment_const_reverse_iterator | rbegin_segments () const
| Obtain an iterator pointing at the last segment of the polyline.
const_iterator | rend () const
Segment_const_reverse_iterator | rend_segments () const
| Obtain an iterator pointing at the past-the-end segment of the polyline in reverse order.
Segments_size_type | size () const
Segments_container_size | number_of_segments () const
| Obtain the number of segments that comprise the polyline.
SegmentTraits_2::X_monotone_curve_2 | operator[] (size_t k) const
| Obtain the \( k\)th segment of the polyline. More...
Bbox_2 | bbox () const
| the bounding box of the polyline.

## Operations

void | push_back (const Segment_2 &seg)
| Append a segment to the polyline at the back. More...
void | push_front (const Segment_2 &seg)
| Append a segment to the polyline at the front. More...
void | push_back (const Point_2 &p)
void | clear ()
| Reset the polyline.

## Member Typedef Documentation

template<typename SegmentTraits_2 >
template<typename Segment_type_T , typename Point_type_T >

typedef unspecified_type CGAL::Arr_polyline_traits_2< SegmentTraits_2 >::Curve_2< Segment_type_T, Point_type_T >::const_iterator

Deprecated:
  A bidirectional iterator that allows traversing the points that comprise a polyline curve.

template<typename SegmentTraits_2 >
template<typename Segment_type_T , typename Point_type_T >

typedef unspecified_type CGAL::Arr_polyline_traits_2< SegmentTraits_2 >::Curve_2< Segment_type_T, Point_type_T >::const_reverse_iterator

Deprecated:
  A bidirectional iterator that allows traversing the points that comprise a polyline curve.

## Constructor & Destructor Documentation

template<typename SegmentTraits_2 >
template<typename Segment_type_T , typename Point_type_T >
template<typename InputIterator >

CGAL::Arr_polyline_traits_2< SegmentTraits_2 >::Curve_2< Segment_type_T, Point_type_T >::Curve_2 | ( | Iterator | first,
|  | Iterator | last
| ) |  |

Construct a polyline defined by the given range of segments `[first, last)` (the value-type of `InputIterator` must be `SegmentTraits_2::Curve_2`.

In general, the segments might not be \(x\)-monotone, furthermore, they might not form a continuous polyline.

Precondition
  The segments in the range should form a continuous and well-oriented polyline.

Deprecated:
  For backwards compatibility, it is possible to call this constructor with a range whose value-type is `SegmentTraits_2::Point_2`. In this case, the constructed polyline will concatenate the \(n\)th point with the \((n+1)\)-st point in the range (using a `SegmentTraits_2::Segment_2`'s). This functionality is deprecated. Instead use the `Construct_curve_2` functors.

## Member Function Documentation

template<typename SegmentTraits_2 >
template<typename Segment_type_T , typename Point_type_T >

const_iterator CGAL::Arr_polyline_traits_2< SegmentTraits_2 >::Curve_2< Segment_type_T, Point_type_T >::begin | ( | ) |  | const

Deprecated:
  Obtain an iterator pointing at the source point of the polyline.

template<typename SegmentTraits_2 >
template<typename Segment_type_T , typename Point_type_T >

const_iterator CGAL::Arr_polyline_traits_2< SegmentTraits_2 >::Curve_2< Segment_type_T, Point_type_T >::end | ( | ) |  | const

Deprecated:
  Obtain an iterator pointing after the end of the polyline.

template<typename SegmentTraits_2 >
template<typename Segment_type_T , typename Point_type_T >

SegmentTraits_2::X_monotone_curve_2 CGAL::Arr_polyline_traits_2< SegmentTraits_2 >::Curve_2< Segment_type_T, Point_type_T >::operator[] | ( | size_t | k) |  | const

Obtain the \( k\)th segment of the polyline.

Precondition
  \(k\) is not greater then or equal to \(n-1\), where \(n\) is the number of segments.

template<typename SegmentTraits_2 >
template<typename Segment_type_T , typename Point_type_T >

unsigned_int CGAL::Arr_polyline_traits_2< SegmentTraits_2 >::Curve_2< Segment_type_T, Point_type_T >::points | ( | ) |  | const

Deprecated:
  Obtain the number of points that comprise the polyline.

Note that for a bounded polyline, if there are \( n\) points in the polyline, it is comprised of \( (n - 1)\) segments. Currently, only bounded polylines are supported.

template<typename SegmentTraits_2 >
template<typename Segment_type_T , typename Point_type_T >

void CGAL::Arr_polyline_traits_2< SegmentTraits_2 >::Curve_2< Segment_type_T, Point_type_T >::push_back | ( | const Segment_2 & | seg) |  |

Append a segment to the polyline at the back.

Warning: This function does not preform the precondition test that the `Push_back_2` functor does. Thus, it is recommended to use the latter.

Parameters

  seg | The new segment to be appended to the polyline.

Precondition
  If the polyline is not empty, the source of `seg` must coincide with the target point of the last segment in the polyline.

template<typename SegmentTraits_2 >
template<typename Segment_type_T , typename Point_type_T >

void CGAL::Arr_polyline_traits_2< SegmentTraits_2 >::Curve_2< Segment_type_T, Point_type_T >::push_back | ( | const Point_2 & | p) |  |

Deprecated:
  adds a new point to the polyline, which becomes the new target point of `pi`.

template<typename SegmentTraits_2 >
template<typename Segment_type_T , typename Point_type_T >

void CGAL::Arr_polyline_traits_2< SegmentTraits_2 >::Curve_2< Segment_type_T, Point_type_T >::push_front | ( | const Segment_2 & | seg) |  |

Append a segment to the polyline at the front.

Warning: This is a risky function! Don't use it! Prefer the corresponding functor which is provided in the traits class.

Parameters

  seg | The new segment to be appended to the polyline.

Precondition
  If the polyline is not empty, the target of `seg` must coincide with the source point of the first segment in the polyline.

template<typename SegmentTraits_2 >
template<typename Segment_type_T , typename Point_type_T >

const_iterator CGAL::Arr_polyline_traits_2< SegmentTraits_2 >::Curve_2< Segment_type_T, Point_type_T >::rbegin | ( | ) |  | const

Deprecated:
  Obtain an iterator pointing at the target point of the polyline.

template<typename SegmentTraits_2 >
template<typename Segment_type_T , typename Point_type_T >

const_iterator CGAL::Arr_polyline_traits_2< SegmentTraits_2 >::Curve_2< Segment_type_T, Point_type_T >::rend | ( | ) |  | const

Deprecated:
  Obtain an iterator pointing before the beginning of the polyline.

template<typename SegmentTraits_2 >
template<typename Segment_type_T , typename Point_type_T >

Segments_size_type CGAL::Arr_polyline_traits_2< SegmentTraits_2 >::Curve_2< Segment_type_T, Point_type_T >::size | ( | ) |  | const

Deprecated:
  Obtain the number of line segments composing the polyline (equivalent to `pi.points() - 1`).

Was replaced by number_of_segments()