% +------------------------------------------------------------------------+ % | 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 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 % +------------------------------------------------------------------------+