% +------------------------------------------------------------------------+
% | Reference manual page: TriangulatedSurfaceMesh.tex
% +------------------------------------------------------------------------+
% | 15.09.2006   Marc Pouget and Frédéric Cazals
% | Package: Ridges_3
% | 
\RCSdef{\RCSTriangulatedSurfaceMeshRev}{$Id$}
\RCSdefDate{\RCSTriangulatedSurfaceMeshDate}{$Date$}
% |
%%RefPage: end of header, begin of main body
% +------------------------------------------------------------------------+


\begin{ccRefConcept}{TriangulatedSurfaceMesh}

%% \ccHtmlCrossLink{}     %% add further rules for cross referencing links
%% \ccHtmlIndexC[concept]{} %% add further index entries

\ccDefinition
  
The concept \ccRefName\ describes an oriented surface (possibly with
boundary) embedded in the 3 space. It is combinatorially based on a
halfedge data structure with triangular faces, geometrically 3d points
associated to the vertices define the embedding.

\ccTypes

\ccNestedType{Traits}
{
geometric Traits, this is a CGAL::Kernel concept.
}
\ccGlue
\ccNestedType{Facet}
{
Opaque type representing a facet of the \ccRefName\ .
}
\ccGlue
\ccNestedType{Facet_handle}
{
Handle to a facet. Model of the Handle concept.
}
\ccGlue
\ccNestedType{Facet_const_handle}
{
}
\ccGlue
\ccNestedType{Facet_iterator}
{
Iterator over all mesh facets. Model of the ForwardIterator concept.
}
\ccGlue
\ccNestedType{Facet_const_iterator}
{
}
\ccGlue
\ccNestedType{Vertex}
{
Opaque type representing a vertex of the \ccRefName\ .
}
\ccGlue
\ccNestedType{Vertex_handle}
{
Handle to a vertex. Model of the Handle concept.
}
\ccGlue
\ccNestedType{Vertex_const_handle}
{
}
\ccGlue
\ccNestedType{Vertex_iterator}
{
Iterator over all vertices of a mesh. Model of the ForwardIterator concept.
}
\ccGlue
\ccNestedType{Vertex_const_iterator}
{
}
\ccGlue
\ccNestedType{Halfedge}
{
Opaque type representing a halfedge of the \ccRefName\ .
}
\ccGlue
\ccNestedType{Halfedge_handle}
{
Handle to a halfedge. Model of the Handle concept.
}
\ccGlue
\ccNestedType{Halfedge_const_handle}
{
}
\ccGlue
\ccNestedType{Halfedge_iterator}
{
Iterator over all halfedges of a  \ccRefName\ . Model of the ForwardIterator concept.
}
\ccGlue
\ccNestedType{Halfedge_const_iterator}
{
}
\ccGlue
\ccNestedType{Point_iterator}
{
Iterator over all points of a  \ccRefName\ , its value type is \ccc{Traits::Point_3}. Model of the ForwardIterator concept.
}
\ccGlue
\ccNestedType{Point_const_iterator}
{
}


\ccCreation
\ccCreationVariable{mesh}  %% define variable name used by \ccMethod below

Construction and destruction are undefined.

\ccOperations

\ccMethod{Facet_const_iterator     facets_begin();}{iterator over all facets
  (excluding holes).}
\ccGlue
\ccMethod{Facet_const_iterator     facets_end();}{past-the-end iterator.}

\ccMethod{Point_iterator points_begin();}{iterator over all points.}
\ccGlue
\ccMethod{Point_iterator points_end();}{past-the-end iterator.}

% \ccMethod{Vertex_const_iterator    vertices_begin();}{iterator over all vertices.}
% \ccGlue
% \ccMethod{Vertex_const_iterator    vertices_end();}{past-the-end iterator.}

Methods for the Vertex :

\ccCreationVariable{vertex}  %% define variable name used by \ccMethod below

\ccMethod{Traits::Point_3&       point();}{The point associated to the vertex}

Methods for the Halfedge :

\ccCreationVariable{halfedge}  %% define variable name used by \ccMethod below

% \ccMethod{Halfedge_handle opposite();}{}
% \ccGlue
\ccMethod{Halfedge_const_handle opposite() const;}{the opposite halfedge.}

% \ccMethod{Halfedge_handle next();}{}
% \ccGlue
\ccMethod{Halfedge_const_handle next() const;}
    {the next halfedge around the facet.}

% \ccMethod{Halfedge_handle prev();}{}
% \ccGlue
\ccMethod{Halfedge_const_handle prev() const;}
    {the previous halfedge around the facet.}
\ccGlue
\ccMethod{bool             is_border_edge() const;}
    {is true if \ccVar\ or \ccc{halfedge.opposite()} is a border halfedge.}
% \ccMethod{Vertex_handle       vertex();}{}
% \ccGlue
\ccMethod{Vertex_const_handle vertex() const;}{the incident vertex of \ccVar.}
% \ccMethod{Facet_handle       facet();}{}
% \ccGlue
\ccMethod{Facet_const_handle facet() const;}
    {the incident facet of \ccVar.  If \ccVar\ is a border halfedge 
      the result is default construction of the handle.}

Methods for the Facet :

\ccCreationVariable{facet}  %% define variable name used by \ccMethod below
% \ccMethod{Halfedge_handle       halfedge();}{}
% \ccGlue
\ccMethod{Halfedge_const_handle halfedge() const;}{
    an incident halfedge that points to \ccVar.}

\ccGlue



\ccHasModels

\ccc{CGAL::Polyhedron_3} with the restriction that faces are triangular.

\end{ccRefConcept}

% +------------------------------------------------------------------------+
%%RefPage: end of main body, begin of footer
% EOF
% +------------------------------------------------------------------------+

