% +------------------------------------------------------------------------+ % | Reference manual page: HalfedgeDSVertex.tex % +------------------------------------------------------------------------+ % | 22.03.1999 Lutz Kettner % | Package: HalfedgeDS % | \RCSdef{\RCSVertexRev}{$Id$} \RCSdefDate{\RCSVertexDate}{$Date$} % +------------------------------------------------------------------------+ \ccRefPageBegin %%RefPage: end of header, begin of main body % +------------------------------------------------------------------------+ \begin{ccRefConcept}{HalfedgeDSVertex} \label{pageHalfedgeDSItemsVertexRef} \ccDefinition The concept \ccRefName\ defines the requirements for the local \ccc{Vertex} type in the \ccc{HalfedgeDS} concept. It is also required in the \ccc{Vertex_wrapper} member class template of an items class, see the \ccc{HalfedgeDSItems} concept. A vertex optionally stores a reference to an incident halfedge that points to the vertex. A type tag indicates whether the related member functions are supported. Figure~\ref{figureHalfedgeDSOptionalMethods} depicts the relationship between a halfedge and its incident halfedges, vertices, and faces. For the protection of the integrity of the data structure classes such as \ccc{CGAL::Polyhedron_3} are allowed to redefine the modifying member functions to be private. In order to make them accessible for the halfedge data structure they must be derived from a base class \ccc{Base} where the modifying member functions are still public. (The protection could be bypassed by an user, but not by accident.) \ccTypes \ccThree{Halfedge_const_handle}{v.set_halfedge( Halfedge_handle h);}{} \ccThreeToTwo \ccNestedType{HalfedgeDS} {instantiated \ccc{HalfedgeDS} ( $\equiv$ \ccc{Refs}).} \ccGlue \ccNestedType{Base}{base class that allows modifications.} \ccGlue \ccNestedType{Halfedge}{model of \ccc{HalfedgeDSHalfedge}.} \ccGlue \ccNestedType{Face}{model of \ccc{HalfedgeDSFace}.} \ccGlue \ccNestedType{Vertex_handle}{handle to vertex.} \ccGlue \ccNestedType{Halfedge_handle}{handle to halfedge.} \ccGlue \ccNestedType{Face_handle}{handle to face.} \ccGlue \ccNestedType{Vertex_const_handle}{} \ccGlue \ccNestedType{Halfedge_const_handle}{} \ccGlue \ccNestedType{Face_const_handle}{} \ccGlue \ccNestedType{Supports_vertex_halfedge}{\ccc{CGAL::Tag_true} or \ccc{CGAL::Tag_false}.} \ccCreation \ccCreationVariable{v} \ccConstructor{Vertex();}{default constructor.} \ccTagFullDeclarations \ccHeading{Operations available if \ccc{Supports_vertex_halfedge} $\equiv$ \ccc{CGAL::Tag_true}} \ccMethod{Halfedge_handle halfedge();}{} \ccGlue \ccMethod{Halfedge_const_handle halfedge() const;}{ incident halfedge that points to \ccVar.} \ccGlue \ccMethod{void set_halfedge( Halfedge_handle h);}{ sets incident halfedge to $h$.} \ccHasModels \ccRefIdfierPage{CGAL::HalfedgeDS_vertex_base}\\ \ccRefIdfierPage{CGAL::HalfedgeDS_vertex_min_base} \ccSeeAlso \ccRefConceptPage{HalfedgeDS}\\ \ccRefConceptPage{HalfedgeDSItems}\\ \ccRefConceptPage{HalfedgeDSHalfedge}\\ \ccRefConceptPage{HalfedgeDSFace} \ccTagDefaults \end{ccRefConcept} % +------------------------------------------------------------------------+ %%RefPage: end of main body, begin of footer \ccRefPageEnd % EOF % +------------------------------------------------------------------------+