![]()  | 
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.