mirror of https://github.com/CGAL/cgal
374 lines
10 KiB
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
|
|
% +------------------------------------------------------------------------+
|
|
|