cgal/Parameterization/doc_tex/Parameterization_ref/ParameterizationMesh_3.tex

374 lines
10 KiB
TeX

% +------------------------------------------------------------------------+
% | Reference manual page: ParameterizationMesh_3.tex
% +------------------------------------------------------------------------+
% | 23.08.2005 Laurent Saboret, Pierre Alliez
% | Package: Parameterization
% |
\RCSdef{\RCSMeshAdaptorRev}{$Id$}
\RCSdefDate{\RCSMeshAdaptorDate}{$Date$}
% |
%%RefPage: end of header, begin of main body
% +------------------------------------------------------------------------+
\begin{ccRefConcept}{ParameterizationMesh_3}
%% \ccHtmlCrossLink{} %% add further rules for cross referencing links
%% \ccHtmlIndexC[concept]{} %% add further index entries
\ccDefinition
% The section below is automatically generated. Do not edit!
%START-AUTO(\ccDefinition)
ParameterizationMesh\_3 is a concept for a 3D surface mesh. Its main purpose is to allow the parameterization methods to access meshes in a uniform manner.
A ParameterizationMesh\_3 surface consists of vertices, facets and an incidence relation on them. No notion of edge is requested. Vertices represent points in 3d-space. Facets are planar polygons without holes defined by the circular sequence of vertices along their border. The surface itself can have holes. The vertices along the border of a hole are called {\em border vertices}. A surface is {\em closed} if it contains no border vertices.
The surface must be an oriented 2-manifold with border vertices, i.e. the neighborhood of each point on the surface is either homeomorphic to a disc or to a half disc, except for vertices where many holes and surfaces with border can join.
ParameterizationMesh\_3 defines the types, data and methods that a mesh must implement to allow surface parameterization. Among other things, this concept defines accessors to fields specific to parameterizations methods: index, u, v, is\_parameterized.
ParameterizationMesh\_3 meshes can have any genus, arity or number of components. In the other hand, as parameterization methods deal only with topological disks, ParameterizationMesh\_3 defines an interface oriented towards topological disks.
%END-AUTO(\ccDefinition)
\ccHeading{Design Pattern}
% The section below is automatically generated. Do not edit!
%START-AUTO(\ccHeading{Design Pattern})
ParameterizationMesh\_3 is an Adaptor \cite{cgal:ghjv-dpero-95}: it changes the interface of a 3D mesh to match the interface expected by the parameterization methods.
%END-AUTO(\ccHeading{Design Pattern})
\ccTypes
The following mutable handles, iterators, and circulators have appropriate
non-mutable counterparts, i.e. \ccc{const_handle},
\ccc{const_iterator}, and \ccc{const_circulator}. The mutable types are
assignable to their non-mutable counterparts. Both circulators are
assignable to the \ccc{Vertex_iterator}. The iterators are
assignable to the respective handle types. Wherever the handles appear
in function parameter lists, the corresponding iterators can be used as
well.
% The section below is automatically generated. Do not edit!
%START-AUTO(\ccTypes)
\ccNestedType{NT}
{
Number type to represent coordinates.
}
\ccGlue
\ccNestedType{Point_2}
{
2D point that represents (u,v) coordinates computed by parameterization methods. Must provide X() and Y() methods.
}
\ccGlue
\ccNestedType{Point_3}
{
3D point that represents vertices coordinates. Must provide X() and Y() methods.
}
\ccGlue
\ccNestedType{Vector_2}
{
2D vector. Must provide X() and Y() methods.
}
\ccGlue
\ccNestedType{Vector_3}
{
3D vector. Must provide X() and Y() methods.
}
\ccGlue
\ccNestedType{Facet}
{
Opaque type representing a facet of the 3D mesh. No methods are expected.
}
\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 3D mesh. No methods are expected.
}
\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{Border_vertex_iterator}
{
Iterator over vertices of the mesh {\em main border}. Model of the ForwardIterator concept.
}
\ccGlue
\ccNestedType{Border_vertex_const_iterator}
{
}
\ccGlue
\ccNestedType{Vertex_around_facet_circulator}
{
Counter-clockwise circulator over a facet's vertices. Model of the BidirectionalCirculator concept.
}
\ccGlue
\ccNestedType{Vertex_around_facet_const_circulator}
{
}
\ccGlue
\ccNestedType{Vertex_around_vertex_circulator}
{
Clockwise circulator over the vertices incident to a vertex. Model of the BidirectionalCirculator concept.
}
\ccGlue
\ccNestedType{Vertex_around_vertex_const_circulator}
{
}
\ccGlue
%END-AUTO(\ccTypes)
\ccCreation
\ccCreationVariable{mesh} %% define variable name used by \ccMethod below
Construction and destruction are undefined.
% The section below is automatically generated. Do not edit!
%START-AUTO(\ccCreation)
%END-AUTO(\ccCreation)
\ccOperations
The following mutable methods returning a handle, iterator, or circulator have appropriate
non-mutable counterpart methods, i.e. \ccc{const}, returning a \ccc{const_handle},
\ccc{const_iterator}, or \ccc{const_circulator}.
% The section below is automatically generated. Do not edit!
%START-AUTO(\ccOperations)
\ccMethod{Vertex_iterator mesh_vertices_begin ();}
{
Get iterator over first vertex of mesh.
}
\ccGlue
\ccMethod{Vertex_const_iterator mesh_vertices_begin () const;}
{
}
\ccGlue
\ccMethod{Vertex_iterator mesh_vertices_end ();}
{
Get iterator over past-the-end vertex of mesh.
}
\ccGlue
\ccMethod{Vertex_const_iterator mesh_vertices_end () const;}
{
}
\ccGlue
\ccMethod{int count_mesh_vertices () const;}
{
Count the number of vertices of the mesh.
}
\ccGlue
\ccMethod{void index_mesh_vertices ();}
{
Index vertices of the mesh from 0 to count\_mesh\_vertices()-1.
}
\ccGlue
\ccMethod{Border_vertex_iterator mesh_main_border_vertices_begin ();}
{
Get iterator over first vertex of mesh's {\em main border}.
}
\ccGlue
\ccMethod{Border_vertex_const_iterator mesh_main_border_vertices_begin () const;}
{
}
\ccGlue
\ccMethod{Border_vertex_iterator mesh_main_border_vertices_end ();}
{
Get iterator over past-the-end vertex of mesh's {\em main border}.
}
\ccGlue
\ccMethod{Border_vertex_const_iterator mesh_main_border_vertices_end () const;}
{
}
\ccGlue
\ccMethod{std::list<Vertex_handle> get_border (Vertex_handle seed_vertex);}
{
Return the border containing seed\_vertex. Return an empty list if not found.
}
\ccGlue
\ccMethod{Facet_iterator mesh_facets_begin ();}
{
Get iterator over first facet of mesh.
}
\ccGlue
\ccMethod{Facet_const_iterator mesh_facets_begin () const;}
{
}
\ccGlue
\ccMethod{Facet_iterator mesh_facets_end ();}
{
Get iterator over past-the-end facet of mesh.
}
\ccGlue
\ccMethod{Facet_const_iterator mesh_facets_end () const;}
{
}
\ccGlue
\ccMethod{int count_mesh_facets () const;}
{
Count the number of facets of the mesh.
}
\ccGlue
\ccMethod{bool is_mesh_triangular () const;}
{
Return true of all mesh's facets are triangles.
}
\ccGlue
\ccMethod{int count_mesh_halfedges () const;}
{
Count the number of halfedges of the mesh.
}
\ccGlue
\ccMethod{Vertex_around_facet_circulator facet_vertices_begin (Facet_handle facet);}
{
Get circulator over facet's vertices.
}
\ccGlue
\ccMethod{Vertex_around_facet_const_circulator facet_vertices_begin (Facet_const_handle facet) const;}
{
}
\ccGlue
\ccMethod{int count_facet_vertices (Facet_const_handle facet) const;}
{
Count the number of vertices of a facet.
}
\ccGlue
\ccMethod{Point_3 get_vertex_position (Vertex_const_handle vertex) const;}
{
Get the 3D position of a vertex.
}
\ccGlue
\ccMethod{Point_2 get_vertex_uv (Vertex_const_handle vertex) const;}
{
Get/set the 2D position (u/v pair) of a vertex. Default value is undefined.
}
\ccGlue
\ccMethod{void set_vertex_uv (Vertex_handle vertex, const Point_2 & uv);}
{
}
\ccGlue
\ccMethod{bool is_vertex_parameterized (Vertex_const_handle vertex) const;}
{
Get/set {\em is parameterized} field of vertex. Default value is undefined.
}
\ccGlue
\ccMethod{void set_vertex_parameterized (Vertex_handle vertex, bool parameterized);}
{
}
\ccGlue
\ccMethod{int get_vertex_index (Vertex_const_handle vertex) const;}
{
Get/set vertex index. Default value is undefined.
}
\ccGlue
\ccMethod{void set_vertex_index (Vertex_handle vertex, int index);}
{
}
\ccGlue
\ccMethod{int get_vertex_tag (Vertex_const_handle vertex) const;}
{
Get/set vertex' all purpose tag. Default value is undefined.
}
\ccGlue
\ccMethod{void set_vertex_tag (Vertex_handle vertex, int tag);}
{
}
\ccGlue
\ccMethod{bool is_vertex_on_border (Vertex_const_handle vertex) const;}
{
Return true if a vertex belongs to ANY mesh's border.
}
\ccGlue
\ccMethod{bool is_vertex_on_main_border (Vertex_const_handle vertex) const;}
{
Return true if a vertex belongs to the UNIQUE mesh's main border.
}
\ccGlue
\ccMethod{Vertex_around_vertex_circulator vertices_around_vertex_begin (Vertex_handle vertex, Vertex_handle start_position = Vertex_handle());}
{
Get circulator over the vertices incident to 'vertex'. 'start\_position' defines the optional initial position of the circulator.
}
\ccGlue
\ccMethod{Vertex_around_vertex_const_circulator vertices_around_vertex_begin (Vertex_const_handle vertex, Vertex_const_handle start_position = Vertex_const_handle()) const;}
{
}
\ccGlue
%END-AUTO(\ccOperations)
\ccHasModels
% The section below is automatically generated. Do not edit!
%START-AUTO(\ccHasModels)
\begin{itemize}
\item Adaptators for Polyhedron\_3 and TDS\_2 with 3D points are provided.\item Parameterization\_mesh\_patch\_3$<$M$>$ is a model of ParameterizationMesh\_3 if M is a model of MeshAdaptorWithStream\_3.\end{itemize}
%END-AUTO(\ccHasModels)
\ccRefIdfierPage{CGAL::Parameterization_polyhedron_adaptor_3} \\
\ccRefIdfierPage{CGAL::Parameterization_mesh_patch_3} \\
\ccSeeAlso
\ccRefIdfierPage{ParameterizationPatchableMesh_3}
\end{ccRefConcept}
% +------------------------------------------------------------------------+
%%RefPage: end of main body, begin of footer
% EOF
% +------------------------------------------------------------------------+