CGAL 6.0 - 2D Boolean Operations on Nef Polygons
|
#include <CGAL/Nef_polyhedron_2.h>
Inherited by CGAL::Nef_polyhedron_2< T >::Explorer.
An instance D
of the data type Topological_explorer
is a decorator for interfacing the topological structure of a plane map P
(read-only).
A plane map P
consists of a triple \( (V, E, F)\) of vertices, edges, and faces. We collectively call them objects. An edge e
is a pair of vertices (v,w)
with incidence operations v = source(e)
, w = target(e)
. The list of all edges with source v
is called the adjacency list A(v)
.
Edges are paired into twins. For each edge e = (v,w)
there's an edge twin(e) = (w,v)
and twin(twin(e)) == e
The existence of the edge pairs makes P
a bidirected graph, the twin
links make P
a map..
An edge e = (v,w)
knows two adjacent edges en = next(e)
and ep = previous(e)
where source(en) = w
, previous(en) = e
and target(ep) = v
and next(ep) = e
. By this symmetric previous-next
relationship all edges are partitioned into face cycles. Two edges \( e\) and \( e'\) are in the same face cycle if \( e = next^*(e')\). All edges e
in the same face cycle have the same incident face \( f = face(e)\). The cyclic order on the adjacency list of a vertex v = source(e)
is given by cyclic_adj_succ(e) = twin(previous(e))
and cyclic_adj_pred(e) = next(twin(e))
.
A vertex v
is embedded via coordinates point(v)
. By the embedding of its source and target an edge corresponds to a segment. P
has the property that the embedding is always order-preserving. This means a ray fixed in point(v)
of a vertex v
and swept around counterclockwise meets the embeddings of target(e)
( \( e \in A(v)\)) in the cyclic order defined by the list order of A
.
The embedded face cycles partition the plane into maximal connected subsets of points. Each such set corresponds to a face. A face is bounded by its incident face cycles. For all the edges in the non-trivial face cycles it holds that the face is left of the edges. There can also be trivial face cycles in form of isolated vertices in the interior of a face. Each such vertex v
knows its surrounding face f = face(v)
.
Plane maps are attributed, for each object \( u \in V \cup E \cup F\) we attribute an information mark(u)
of type Mark
. Mark
fits the concepts assignable, default-constructible, and equal-comparable.
Types | |
typedef unspecified_type | Plane_map |
The underlying plane map type. | |
typedef unspecified_type | Point |
The point type of vertices. | |
typedef unspecified_type | Mark |
All objects (vertices, edges, faces) are attributed by a Mark object. | |
typedef unspecified_type | Size_type |
The size type. | |
Circulators | |
Local types are handles, iterators and circulators of the following kind: Additionally the following circulators are defined. | |
typedef unspecified_type | Halfedge_around_vertex_const_circulator |
circulating the outgoing halfedges in \( A(v)\). | |
typedef unspecified_type | Halfedge_around_face_const_circulator |
circulating the halfedges in the face cycle of a face f . | |
typedef unspecified_type | Hole_const_iterator |
iterating all holes of a face f . | |
typedef unspecified_type | Isolated_vertex_const_iterator |
iterating all isolated vertices of a face f . | |
Operations | |
Vertex_const_handle | source (Halfedge_const_handle e) |
returns the source of e . | |
Vertex_const_handle | target (Halfedge_const_handle e) |
returns the target of e . | |
Halfedge_const_handle | twin (Halfedge_const_handle e) |
returns the twin of e . | |
bool | is_isolated (Vertex_const_handle v) |
returns true iff \( A(v) = \emptyset\). | |
Halfedge_const_handle | first_out_edge (Vertex_const_handle v) |
returns one halfedge with source v . | |
Halfedge_const_handle | last_out_edge (Vertex_const_handle v) |
returns the halfedge with source v that is the last in the circular iteration before encountering first_out_edge(v) again. | |
Halfedge_const_handle | cyclic_adj_succ (Halfedge_const_handle e) |
returns the edge after e in the cyclic ordered adjacency list of source(e) . | |
Halfedge_const_handle | cyclic_adj_pred (Halfedge_const_handle e) |
returns the edge before e in the cyclic ordered adjacency list of source(e) . | |
Halfedge_const_handle | next (Halfedge_const_handle e) |
returns the next edge in the face cycle containing e . | |
Halfedge_const_handle | previous (Halfedge_const_handle e) |
returns the previous edge in the face cycle containing e . | |
Face_const_handle | face (Halfedge_const_handle e) |
returns the face incident to e . | |
Face_const_handle | face (Vertex_const_handle v) |
returns the face incident to v . | |
Halfedge_const_handle | halfedge (Face_const_handle f) |
returns a halfedge in the bounding face cycle of f (Halfedge_const_handle() if there is no bounding face cycle). | |
Iteration | |
Vertex_const_iterator | vertices_begin () |
iterator over vertices of the map. | |
Vertex_const_iterator | vertices_end () |
past-the-end iterator for vertices. | |
Halfedge_const_iterator | halfedges_begin () |
iterator over halfedges of the map. | |
Halfedge_const_iterator | halfedges_end () |
past-the-end iterator for halfedges. | |
Face_const_iterator | faces_begin () |
iterator over faces of the map. | |
Face_const_iterator | faces_end () |
past-the-end iterator for faces | |
Halfedge_around_vertex_const_circulator | out_edges (Vertex_const_handle v) |
returns a circulator for the cyclic adjacency list of v . | |
Halfedge_around_face_const_circulator | face_cycle (Face_const_handle f) |
returns a circulator for the outer face cycle of f . | |
Hole_const_iterator | holes_begin (Face_const_handle f) |
returns an iterator for all holes in the interior of f . | |
Hole_const_iterator | holes_end (Face_const_handle f) |
returns the past-the-end iterator of f . | |
Isolated_vertex_const_iterator | isolated_vertices_begin (Face_const_handle f) |
returns an iterator for all isolated vertices in the interior of f . | |
Isolated_vertex_const_iterator | isolated_vertices_end (Face_const_handle f) |
returns the past the end iterator of f . | |
Associated Information | |
The type | |
const Point & | point (Vertex_const_handle v) |
returns the embedding of v . | |
const Mark & | mark (Vertex_const_handle v) |
returns the mark of v . | |
const Mark & | mark (Halfedge_const_handle e) |
returns the mark of e . | |
const Mark & | mark (Face_const_handle f) |
returns the mark of f . | |
Statistics and Integrity | |
Size_type | number_of_vertices () |
returns the number of vertices. | |
Size_type | number_of_halfedges () |
returns the number of halfedges. | |
Size_type | number_of_edges () |
returns the number of halfedge pairs. | |
Size_type | number_of_faces () |
returns the number of faces. | |
Size_type | number_of_face_cycles () |
returns the number of face cycles. | |
Size_type | number_of_connected_components () |
calculates the number of connected components of P . | |
void | print_statistics (std::ostream &os=std::cout) |
print the statistics of P : the number of vertices, edges, and faces. | |
void | check_integrity_and_topological_planarity (bool faces=true) |
checks the link structure and the genus of P . | |
typedef unspecified_type CGAL::Nef_polyhedron_2< T >::Topological_explorer::Hole_const_iterator |
iterating all holes of a face f
.
The type is convertible to Halfedge_const_handle
.
typedef unspecified_type CGAL::Nef_polyhedron_2< T >::Topological_explorer::Isolated_vertex_const_iterator |
iterating all isolated vertices of a face f
.
The type generalizes Vertex_const_handle
.
Face_const_handle CGAL::Nef_polyhedron_2< T >::Topological_explorer::face | ( | Vertex_const_handle | v | ) |
returns the face incident to v
.
is_isolated(v)
. Halfedge_const_handle CGAL::Nef_polyhedron_2< T >::Topological_explorer::first_out_edge | ( | Vertex_const_handle | v | ) |
returns one halfedge with source v
.
It's the starting point for the circular iteration over the halfedges with source v
.
!is_isolated(v)
. Hole_const_iterator CGAL::Nef_polyhedron_2< T >::Topological_explorer::holes_begin | ( | Face_const_handle | f | ) |
returns an iterator for all holes in the interior of f
.
A Hole_iterator
can be assigned to a Halfedge_around_face_const_circulator
.
Halfedge_const_handle CGAL::Nef_polyhedron_2< T >::Topological_explorer::last_out_edge | ( | Vertex_const_handle | v | ) |
returns the halfedge with source v
that is the last in the circular iteration before encountering first_out_edge(v)
again.
!is_isolated(v)
.