This class also provides additional methods to traverse the resulting planar-map along curves inserted into the arrangement (note that a single curve in the arrangement might correspond to several edges of the planar map).
#include <CGAL/Arrangement_2.h>
The base class of Halfedge has additional properties apart from the ones defined for planar maps.
| |
represents a curve inserted into the
arrangement, which possibly intersects other curves in the arrangement,
and is not necessarily -monotone.
| |
| |
represents a subcurve of the curve inserted
into the arrangement. It is created by invoking a user defined
split_function on the original curve, or on another curve. By
default a subcurve is created from the original curve by invoking
the function Traits::curve_make_x_monotone().
| |
| |
represents a subcurve of the curve inserted
into the arrangement which is created by an intersection with
another curve. It holds a curve which is disjoint in its interior
from the other curves in the arrangement, and holds a cross reference
to the Halfedge in the planar map representing it.
| |
| |
represents a vertex of the planar map induced by the
arrangement.
| |
| |
represents a halfedge of the planar map induced by
the arrangement. It has additional methods, see class definition
of Arrangement_2<Dcel,Traits,Base_node>::Halfedge
.
| |
| |
represents a face of the planar map induced by
the arrangement.
|
The following handles, iterators and circulators have appropriate constant counterparts. The mutable types are assignable to their constant counterparts. All circulators are assignable to the Halfedge_iterator. The iterators are assignable to the respective handle types. Wherever the handles appear in function parameter lists, the appropriate iterator can be used as well.
| |
A bidirectional iterator over
all Curve nodes of the arrangement. Its value-type is
Curve_node.
| |
| |
a bidirectional iterator over all
the subcurves which were created from the same original curve.
Its value-type is
Subcurve_node.
| |
| |
a bidirectional iterator over all
the Edge_nodes which were created from the same original curve.
Its value-type is
Edge_node.
| |
| |
handle to vertex.
| |
| |
handle to halfedge.
| |
| |
handle to face
| |
| |
a bidirectional iterator over the
vertices of the arrangement. Its value-type is
Vertex.
| |
| |
a bidirectional iterator over the
halfedges of the arrangement. Its value-type is Halfedge.
| |
| |
a bidirectional iterator over the
faces of the arrangement. Its value-type is Face.
| |
| |
a forward circulator over the
edges of a CCB (connected components of the boundary). Its
value-type is Halfedge.
| |
| |
a forward circulator over
the half-edges which have the vertex as their source.
The half-edges are traversed in
their clockwise order around the vertex. Its value-type is
Halfedge.
| |
| |
a bidirectional iterator to
traverse all the holes (i.e., inner CCBs) of a face
(Holes_iterator++ is the next hole in the face).
Its value type is
Ccb_halfedge_circulator.
| |
| |
a bidirectional circulator over
the overlapping edge nodes that correspond to a single pair of
halfedges. Its value-type is Edge_node and it can be
cast to an Edge_iterator.
|
| ||
| the planar map type of the arrangement. |
| |
same as the planar map locate type.
|
| ||
| the point type of the arrangement | |
| ||
| the curve type of the arrangement. Objects of this type are inserted to the arrangement. | |
| ||
| the -monotone curve type of the arrangement. The input curves of type Curve_2 are divided into -monotone subcurves. |
| |||
create an empty arrangement with the default point location strategy.
| |||
| |||
create an empty arrangement with *pl as the point location
strategy.
| |||
| |||
create an empty arrangement with tr as the traits class and
*pl as the point location strategy.
|
template <class InputIterator>
advanced |
The split-function should get as input a curve and a reference to a list of curves (where the subcurves will be stored), its return value is void. See Section and Section for examples of user-defined functions. The functions are called with the following syntax:
(*(*F_begin))(const Curve_2& c, list<Curve_2>& l);
advanced |
advanced |
|
| |
reading Arrangement_2<Dcel,Traits,Base_node> from a given input stream. The input stream should support the extractor operator (>>) for the Point_2 and Curve_2 types of Arrangement. |
template <class Scanner>
|
| |
reading Arrangement_2<Dcel,Traits,Base_node> from a given input stream when taking the scanner class as a parameter. The input stream should support the extractor operator (>>) for the Point_2 and Curve_2 types of Arrangement. |
advanced |
|
| |
sets update mode to u. If update mode is true then every curve inserted into the arrangement is also inserted into the planar map induced by it (i.e., it is intersected with the rest of the curves in the arrangement). If update mode is false then the curve is only split into -monotone curves and inserted into the hierarchy tree (without the edge level which is not constructed). If update mode is changed from false to true then the planar map is updated with all the curves inserted into the arrangement since the last time update was true. | ||
|
| |
returns the begin iterator of the curves (i.e., the curves that were inserted to arr). | ||
|
| |
returns the past-the-end iterator of the curves. | ||
|
| |
removes the curve and all it's subcurves from the arrangement. |
The following operations have the same functionality as their counterparts in the planar map.
|
| |||
|
| |||
|
| |||
|
| |||
|
| |||
|
| |||
|
|
|||
|
|
|||
|
| |||
|
| |||
|
| |||
|
| |||
|
| |||
|
| |||
checks the validity of many features of the arrangements. First, checks the validity of the arrangement's planar map. Then, checks for the correctness of the hierarchy tree. Finally, some geometric properties are verified, e.g., each edge's end point is the start point of its next edge. if the verboseparameter is true then a verbose description of the validity check is sent to the output. |
The planar map operations: merge_edge and remove_edge are not implemented in the arrangement level, since they can cause inconsistencies between the hierarchy tree and the planar map. If it is necessary for the users to perform these operations they can still achieve this. For example, if the users need to remove an edge they can remove the curve and insert the two subcurves that are created after the edge is removed, instead of the original curve.