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 border vertices. A surface is 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. On the other hand, as parameterization methods deal only with topological disks, ParameterizationMesh_3 defines an interface oriented towards topological disks.
ParameterizationMesh_3 is an Adaptor [GHJV95]: it changes the interface of a 3D mesh to match the interface expected by the parameterization methods.
The following mutable handles, iterators, and circulators have appropriate non-mutable counterparts, i.e. const_handle, const_iterator, and const_circulator. The mutable types are assignable to their non-mutable counterparts. Both circulators are assignable to the 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.
Construction and destruction are undefined.
The following mutable methods returning a handle, iterator, or circulator have appropriate non-mutable counterpart methods, i.e. const, returning a const_handle, const_iterator, or const_circulator.
bool | mesh.is_valid () const | Indicate if the mesh matches the ParameterizationMesh_3 concept. | ||
Vertex_iterator | mesh.mesh_vertices_begin () | Get iterator over first vertex of mesh. | ||
Vertex_const_iterator | mesh.mesh_vertices_begin () const | |||
Vertex_iterator | mesh.mesh_vertices_end () | Get iterator over past-the-end vertex of mesh. | ||
Vertex_const_iterator | mesh.mesh_vertices_end () const | |||
int | mesh.count_mesh_vertices () const | Count the number of vertices of the mesh. | ||
void | mesh.index_mesh_vertices () | Index vertices of the mesh from 0 to count_mesh_vertices()-1. | ||
Border_vertex_iterator | mesh.mesh_main_border_vertices_begin () | |||
Get iterator over first vertex of mesh's main border. | ||||
Border_vertex_const_iterator | mesh.mesh_main_border_vertices_begin () const | |||
Border_vertex_iterator | mesh.mesh_main_border_vertices_end () | |||
Get iterator over past-the-end vertex of mesh's main border. | ||||
Border_vertex_const_iterator | mesh.mesh_main_border_vertices_end () const | |||
std::list<Vertex_handle> | mesh.get_border ( Vertex_handle seed_vertex) | |||
Return the border containing seed_vertex. Return an empty list if not found. | ||||
Facet_iterator | mesh.mesh_facets_begin () | Get iterator over first facet of mesh. | ||
Facet_const_iterator | mesh.mesh_facets_begin () const | |||
Facet_iterator | mesh.mesh_facets_end () | Get iterator over past-the-end facet of mesh. | ||
Facet_const_iterator | mesh.mesh_facets_end () const | |||
int | mesh.count_mesh_facets () const | Count the number of facets of the mesh. | ||
bool | mesh.is_mesh_triangular () const | Return true of all mesh's facets are triangles. | ||
int | mesh.count_mesh_halfedges () const | |||
Count the number of halfedges of the mesh. | ||||
Vertex_around_facet_circulator | mesh.facet_vertices_begin ( Facet_handle facet) | |||
Get circulator over facet's vertices. | ||||
Vertex_around_facet_const_circulator | ||||
mesh.facet_vertices_begin ( Facet_const_handle facet) const | ||||
int | mesh.count_facet_vertices ( Facet_const_handle facet) const | |||
Count the number of vertices of a facet. | ||||
Point_3 | mesh.get_vertex_position ( Vertex_const_handle vertex) const | |||
Get the 3D position of a vertex. | ||||
Point_2 | mesh.get_vertex_uv ( Vertex_const_handle vertex) const | |||
Get/set the 2D position (u/v pair) of a vertex. Default value is undefined. | ||||
void | mesh.set_vertex_uv ( Vertex_handle vertex, Point_2 uv) | |||
bool | mesh.is_vertex_parameterized ( Vertex_const_handle vertex) const | |||
Get/set is parameterized field of vertex. Default value is undefined. | ||||
void | mesh.set_vertex_parameterized ( Vertex_handle vertex, bool parameterized) | |||
int | mesh.get_vertex_index ( Vertex_const_handle vertex) const | |||
Get/set vertex index. Default value is undefined. | ||||
void | mesh.set_vertex_index ( Vertex_handle vertex, int index) | |||
int | mesh.get_vertex_tag ( Vertex_const_handle vertex) const | |||
Get/set vertex' all purpose tag. Default value is undefined. | ||||
void | mesh.set_vertex_tag ( Vertex_handle vertex, int tag) | |||
bool | mesh.is_vertex_on_border ( Vertex_const_handle vertex) const | |||
Return true if a vertex belongs to ANY mesh's border. | ||||
bool | mesh.is_vertex_on_main_border ( Vertex_const_handle vertex) const | |||
Return true if a vertex belongs to the UNIQUE mesh's main border. | ||||
Vertex_around_vertex_circulator |
| |||
Get circulator over the vertices incident to vertex. start_position defines the optional initial position of the circulator. | ||||
Vertex_around_vertex_const_circulator | ||||
|
We provide 2 models of this concept:
Parameterization_polyhedron_adaptor_3<Polyhedron_3_>
Parameterization_mesh_patch_3<ParameterizationPatchableMesh_3>
ParameterizationPatchableMesh_3