mirror of https://github.com/CGAL/cgal
200 lines
6.3 KiB
TeX
200 lines
6.3 KiB
TeX
% begin cgal manual page
|
|
|
|
\begin{ccRefClass}{Explorer}\ccCreationVariable{D}
|
|
|
|
\ccDefinition
|
|
|
|
...
|
|
|
|
|
|
|
|
\ccSetOneOfTwoColumns{5cm}
|
|
|
|
\ccTypes
|
|
|
|
\ccNestedType{Sphere_point}{embedding vertices.}
|
|
|
|
\ccNestedType{Sphere_segment}{embedding edges.}
|
|
|
|
\ccNestedType{Sphere_circle}{embedding loops.}
|
|
|
|
\ccNestedType{Mark}{attributes of objects (vertices, edges, faces).}
|
|
|
|
\ccNestedType{Size_type}{size type.}
|
|
|
|
Local types are handles, iterators and circulators of the following
|
|
kind: \ccc{Vertex_handle}, \ccc{Vertex_iterator},
|
|
\ccc{Halfedge_handle}, \ccc{Halfedge_iterator}, \ccc{Halfloop_handle},
|
|
\ccc{Halfloop_iterator}, \ccc{Face_handle}, \ccc{Face_iterator}.
|
|
Additionally the following circulators are defined.
|
|
|
|
|
|
|
|
\ccNestedType{Halfedge_around_vertex_const_circulator}{circulating the
|
|
adjacency list of an vertex \ccc{v}. }
|
|
|
|
\ccNestedType{Halfedge_around_face_const_circulator}{circulating the
|
|
face cycle of an face \ccc{f}. }
|
|
|
|
\ccNestedType{Face_cycle_const_iterator}{iterating all face cycles of
|
|
an face \ccc{f}. The iterator has method \ccc{bool is_vertex()},
|
|
\ccc{bool is_halfedge()}, \ccc{bool is_halfloop()}, and can be
|
|
converted to the corresponding handles \ccc{Vertex_const_handle},
|
|
\ccc{Halfedge_const_handle}, or \ccc{Halfloop_const_handle}. }
|
|
|
|
\ccSetOneOfTwoColumns{3cm}
|
|
|
|
\ccCreation
|
|
|
|
an explorer is copy constructible and available via the corresponding
|
|
method of \ccc{Nef_polyhedron_S2}.
|
|
|
|
\ccSetTwoOfThreeColumns{4cm}{4cm}
|
|
|
|
\ccOperations
|
|
|
|
\ccMethod{Vertex_const_handle source(Halfedge_const_handle e)
|
|
;}{returns the source of \ccc{e}. }
|
|
|
|
\ccMethod{Vertex_const_handle target(Halfedge_const_handle e)
|
|
;}{returns the target of \ccc{e}. }
|
|
|
|
\ccMethod{Halfedge_const_handle twin(Halfedge_const_handle e)
|
|
;}{returns the twin of \ccc{e}. }
|
|
|
|
\ccMethod{Halfloop_const_handle twin(Halfloop_const_handle l)
|
|
;}{returns the twin of \ccc{l}. }
|
|
|
|
\ccMethod{bool is_isolated(Vertex_const_handle v) ;}{returns
|
|
\ccc{true} when \ccc{v} is linked to the interior of a face. }
|
|
|
|
\ccMethod{Halfedge_const_handle first_out_edge(Vertex_const_handle v)
|
|
;}{returns one edge with source \ccc{v}. It's the starting point for
|
|
the circular iteration over the edges with source \ccc{v}.
|
|
\ccPrecond \ccc{!is_isolated(v)}. }
|
|
|
|
\ccMethod{Halfedge_const_handle last_out_edge(Vertex_const_handle v)
|
|
;}{returns one edge with source \ccc{v}. \ccPrecond
|
|
\ccc{!is_isolated(v)}. }
|
|
|
|
\ccMethod{Halfedge_const_handle cyclic_adj_succ(Halfedge_const_handle
|
|
e) ;}{returns the edge after \ccc{e} in the cyclic ordered adjacency
|
|
list of \ccc{source(e)}. }
|
|
|
|
\ccMethod{Halfedge_const_handle cyclic_adj_pred(Halfedge_const_handle
|
|
e) ;}{returns the edge before \ccc{e} in the cyclic ordered
|
|
adjacency list of \ccc{source(e)}. }
|
|
|
|
\ccMethod{Halfedge_const_handle next(Halfedge_const_handle e)
|
|
;}{returns the next edge in the face cycle containing \ccc{e}. }
|
|
|
|
\ccMethod{Halfedge_const_handle previous(Halfedge_const_handle e)
|
|
;}{returns the previous edge in the face cycle containing \ccc{e}.
|
|
}
|
|
|
|
\ccMethod{Face_const_handle face(Halfedge_const_handle e) ;}{returns
|
|
the face incident to \ccc{e}. }
|
|
|
|
\ccMethod{Face_const_handle face(Halfloop_const_handle l) ;}{returns
|
|
the face incident to \ccc{l}. }
|
|
|
|
\ccMethod{Face_const_handle face(Vertex_const_handle v) ;}{returns the
|
|
face incident to \ccc{v}. \ccPrecond \ccc{is_isolated(v)}. }
|
|
|
|
\ccHeading{Iteration}
|
|
|
|
\ccMethod{Halfloop_const_handle halfloop() ;}{returns access to the
|
|
loop. }
|
|
|
|
\ccMethod{bool has_loop() ;}{returns true iff there is a loop. }
|
|
|
|
\ccMethod{Halfedge_around_vertex_const_circulator
|
|
out_edges(Vertex_const_handle v) ;}{returns a circulator for the
|
|
cyclic adjacency list of \ccc{v}. \ccPrecond the adjacency list is
|
|
not empty. }
|
|
|
|
\ccMethod{Face_cycle_const_iterator
|
|
face_cycles_begin(Face_const_handle f) ;}{returns an iterator for
|
|
all bounding face cycles of \ccc{f}. The iterator is is convertable
|
|
to \ccc{Vertex_const_handle}, \ccc{Halfloop_const_handle}, or
|
|
\ccc{Halfedge_const_handle}. }
|
|
|
|
\ccMethod{Face_cycle_const_iterator face_cycles_end(Face_const_handle
|
|
f) ;}{returns the past the end iterator of \ccc{f}. }
|
|
|
|
\ccHeading{Statistics and Integrity}
|
|
|
|
\ccMethod{Size_type number_of_vertices() ;}{returns the number of
|
|
vertices. }
|
|
|
|
\ccMethod{Size_type number_of_halfedges() ;}{returns the number of
|
|
halfedges. }
|
|
|
|
\ccMethod{Size_type number_of_edges() ;}{returns the number of edges.
|
|
}
|
|
|
|
\ccMethod{Size_type number_of_halfloops() ;}{returns the number of
|
|
halfloops. }
|
|
|
|
\ccMethod{Size_type number_of_loops() ;}{returns the number of loops.
|
|
}
|
|
|
|
\ccMethod{Size_type number_of_faces() ;}{returns the number of faces.
|
|
}
|
|
|
|
\ccMethod{Size_type number_of_face_cycles() ;}{returns the number of
|
|
face cycles. }
|
|
|
|
\ccMethod{Size_type number_of_connected_components() ;}{calculates the
|
|
number of connected components of \ccc{P}. }
|
|
|
|
\ccMethod{void print_statistics(std::ostream& os = std::cout) ;}{print
|
|
the statistics of \ccc{P}: the number of vertices, edges, and faces.
|
|
}
|
|
|
|
\ccMethod{void check_integrity_and_topological_planarity(bool
|
|
faces=true) ;}{checks the link structure and the genus of \ccc{P}.
|
|
}
|
|
|
|
\ccHeading{Associated Information}
|
|
|
|
\ccMethod{const Sphere_point& point(Vertex_const_handle v) ;}{returns
|
|
the embedding of \ccc{v}. }
|
|
|
|
\ccMethod{const Sphere_circle& circle(Halfedge_const_handle e)
|
|
;}{returns the circle supporting \ccc{e}. }
|
|
|
|
\ccMethod{const Sphere_circle& circle(Halfloop_const_handle l)
|
|
;}{returns the circle supporting \ccc{l}. }
|
|
|
|
\ccMethod{Mark mark(Vertex_const_handle v) ;}{returns the mark of
|
|
\ccc{v}. }
|
|
|
|
\ccMethod{Mark mark(Halfedge_const_handle e) ;}{returns the mark of
|
|
\ccc{e}. }
|
|
|
|
\ccMethod{Mark mark(Halfloop_const_handle l) ;}{returns the mark of
|
|
\ccc{l}. }
|
|
|
|
\ccMethod{Mark mark(Face_const_handle f) ;}{returns the mark of
|
|
\ccc{f}. }
|
|
|
|
\ccHeading{Iteration}
|
|
|
|
The list of all objects can be accessed via iterator ranges.
|
|
For comfortable iteration we also provide iterations macros.
|
|
The iterator range access operations are of the following kind:\\
|
|
\ccc{Vertex_iterator vertices_begin()/vertices_end()}\\
|
|
\ccc{Halfedge_iterator halfedges_begin()/halfedges_end()}\\
|
|
\ccc{Halfloop_iterator halfloops_begin()/halfloops_end()}\\
|
|
\ccc{Face_iterator faces_begin()/faces_end()}
|
|
|
|
The macros are then \ccc{CGAL_forall_vertices(v,M)},
|
|
\ccc{CGAL_forall_halfedges(e,M)}, \ccc{CGAL_forall_faces(f,M)},
|
|
\ccc{CGAL_forall_face_cycles_of(fc,F)} where \ccc{M} is a sphere map
|
|
and \ccc{F} is a face.
|
|
|
|
\end{ccRefClass}
|
|
|
|
|