\( \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
CGAL::Arr_polycurve_traits_2< GeometryTraits_2 >::Curve_2< Segment_type_T, Point_type_T > Class Template Reference

#include <CGAL/Arr_polycurve_traits_2.h>

Definition

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

Construction of polycurves 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 GeometryTraits_2::Curve_2 and GeometryTraits_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 polycurve segments. In addition, an operator<< for the segments is defined for standard output streams, and an operator>> for the segments is defined for standard input streams.

Types

typedef std::vector< Segment_2Segments_container
 The container of the segments that comprises the polycurve.
 
typedef
Segments_container::size_type 
Segments_size_type
 The size of the container that comprises the polycurve.
 
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 that comprise the polycurve.
 
typedef unspecified_type Segment_const_reverse_iterator
 A bidirectional constant iterator that allows traversing the segments that comprise the polycurve.
 

Creation

 Curve_2 ()
 Default constructor that constructs an empty polycurve.
 
 Curve_2 (const Segment_2 seg)
 Construct a polycurve from one segment.
 
template<typename InputIterator >
 Curve_2 (Iterator first, Iterator last)
 Construct a polycurve defined by the given range of segments [first, last) (the value-type of InputIterator must be GeometryTraits_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 polycurve.
 
const_iterator end () const
 
Segment_const_iterator end_segments () const
 Get an iterator pointing at the past-the-end segment of the polycurve.
 
const_iterator rbegin () const
 
Segment_const_reverse_iterator rbegin_segments () const
 Obtain an iterator pointing at the last segment of the polycurve.
 
const_iterator rend () const
 
Segment_const_reverse_iterator rend_segments () const
 Obtain an iterator pointing at the past-the-end segment of the polycurve in reverse order.
 
Segments_size_type size () const
 
Segments_container_size number_of_segments () const
 Obtain the number of segments that comprise the polycurve.
 
GeometryTraits_2::X_monotone_curve_2 operator[] (size_t k) const
 Obtain the \( k\)th segment of the polycurve. More...
 
Bbox_2 bbox () const
 Obtain the bounding box of the polycurve.
 

Operations

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

Member Typedef Documentation

template<typename GeometryTraits_2 >
template<typename Segment_type_T , typename Point_type_T >
typedef unspecified_type CGAL::Arr_polycurve_traits_2< GeometryTraits_2 >::Curve_2< Segment_type_T, Point_type_T >::const_iterator
Deprecated:
A bidirectional iterator that allows traversing the points that comprise a polycurve's segments.
template<typename GeometryTraits_2 >
template<typename Segment_type_T , typename Point_type_T >
typedef unspecified_type CGAL::Arr_polycurve_traits_2< GeometryTraits_2 >::Curve_2< Segment_type_T, Point_type_T >::const_reverse_iterator
Deprecated:
A bidirectional iterator that allows traversing the points that comprise a polycurve's segments.

Constructor & Destructor Documentation

template<typename GeometryTraits_2 >
template<typename Segment_type_T , typename Point_type_T >
template<typename InputIterator >
CGAL::Arr_polycurve_traits_2< GeometryTraits_2 >::Curve_2< Segment_type_T, Point_type_T >::Curve_2 ( Iterator  first,
Iterator  last 
)

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

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

Precondition
The segments in the range should form a continuous and well-oriented polycurve.
Deprecated:
For backwards compatibility, it is possible to call this constructor with a range whose value-type is GeometryTraits_2::Point_2. In this case, the constructed polycurve will concatenate the \(n\)th point with the \((n+1)\)-st point in the range (using a GeometryTraits_2::Segment_2's). This functionality is deprecated. Instead use the Construct_curve_2 functors.

Member Function Documentation

template<typename GeometryTraits_2 >
template<typename Segment_type_T , typename Point_type_T >
const_iterator CGAL::Arr_polycurve_traits_2< GeometryTraits_2 >::Curve_2< Segment_type_T, Point_type_T >::begin ( ) const
Deprecated:
Obtain an iterator pointing at the source point of the polycurve.
template<typename GeometryTraits_2 >
template<typename Segment_type_T , typename Point_type_T >
const_iterator CGAL::Arr_polycurve_traits_2< GeometryTraits_2 >::Curve_2< Segment_type_T, Point_type_T >::end ( ) const
Deprecated:
Obtain an iterator pointing after the end of the polycurve.
template<typename GeometryTraits_2 >
template<typename Segment_type_T , typename Point_type_T >
GeometryTraits_2::X_monotone_curve_2 CGAL::Arr_polycurve_traits_2< GeometryTraits_2 >::Curve_2< Segment_type_T, Point_type_T >::operator[] ( size_t  k) const

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

Precondition
\(k\) is not greater then or equal to \(n-1\), where \(n\) is the number of segments.
template<typename GeometryTraits_2 >
template<typename Segment_type_T , typename Point_type_T >
unsigned_int CGAL::Arr_polycurve_traits_2< GeometryTraits_2 >::Curve_2< Segment_type_T, Point_type_T >::points ( ) const
Deprecated:
Obtain the number of segment end-points that comprise the polycurve.

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

template<typename GeometryTraits_2 >
template<typename Segment_type_T , typename Point_type_T >
void CGAL::Arr_polycurve_traits_2< GeometryTraits_2 >::Curve_2< Segment_type_T, Point_type_T >::push_back ( const Segment_2 seg)

Append a segment to the polycurve 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
segThe new segment to be appended to the polycurve.
Precondition
If the polycurve is not empty, the source of seg must coincide with the target point of the last segment in the polycurve.
template<typename GeometryTraits_2 >
template<typename Segment_type_T , typename Point_type_T >
void CGAL::Arr_polycurve_traits_2< GeometryTraits_2 >::Curve_2< Segment_type_T, Point_type_T >::push_back ( const Point_2 p)
Deprecated:
Add a new point to the polycurvs, which becomes the new target point of pi.
Precondition
GeometryTraits_2 is a model of ArrangementConstructXMonotoneCurveTraits_2.
template<typename GeometryTraits_2 >
template<typename Segment_type_T , typename Point_type_T >
void CGAL::Arr_polycurve_traits_2< GeometryTraits_2 >::Curve_2< Segment_type_T, Point_type_T >::push_front ( const Segment_2 seg)

Append a segment to the polycurve 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
segThe new segment to be appended to the polycurve.
Precondition
If the polycurve is not empty, the target of seg must coincide with the source point of the first segment in the polycurve.
template<typename GeometryTraits_2 >
template<typename Segment_type_T , typename Point_type_T >
const_iterator CGAL::Arr_polycurve_traits_2< GeometryTraits_2 >::Curve_2< Segment_type_T, Point_type_T >::rbegin ( ) const
Deprecated:
Obtain an iterator pointing at the target point of the polycurve.
template<typename GeometryTraits_2 >
template<typename Segment_type_T , typename Point_type_T >
const_iterator CGAL::Arr_polycurve_traits_2< GeometryTraits_2 >::Curve_2< Segment_type_T, Point_type_T >::rend ( ) const
Deprecated:
Obtain an iterator pointing before the beginning of the polycurve.
template<typename GeometryTraits_2 >
template<typename Segment_type_T , typename Point_type_T >
Segments_size_type CGAL::Arr_polycurve_traits_2< GeometryTraits_2 >::Curve_2< Segment_type_T, Point_type_T >::size ( ) const
Deprecated:
Obtain the number of segments composing the polycurve (equivalent to pi.points() - 1).

Was replaced by number_of_segments()