Concept

ParameterizationMesh_3

Definition

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.

Design Pattern

ParameterizationMesh_3 is an Adaptor [GHJV95]: it changes the interface of a 3D mesh to match the interface expected by the parameterization methods.

Types

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.

ParameterizationMesh_3::NT
Number type to represent coordinates.

ParameterizationMesh_3::Point_2
2D point that represents (u, v) coordinates computed by parameterization methods. Must provide X() and Y() methods.

ParameterizationMesh_3::Point_3
3D point that represents vertices coordinates. Must provide X() and Y() methods.

ParameterizationMesh_3::Vector_2
2D vector. Must provide X() and Y() methods.

ParameterizationMesh_3::Vector_3
3D vector. Must provide X() and Y() methods.

ParameterizationMesh_3::Facet
Opaque type representing a facet of the 3D mesh. No methods are expected.

ParameterizationMesh_3::Facet_handle
Handle to a facet. Model of the Handle concept.

ParameterizationMesh_3::Facet_const_handle
ParameterizationMesh_3::Facet_iterator
Iterator over all mesh facets. Model of the ForwardIterator concept.

ParameterizationMesh_3::Facet_const_iterator
ParameterizationMesh_3::Vertex
Opaque type representing a vertex of the 3D mesh. No methods are expected.

ParameterizationMesh_3::Vertex_handle
Handle to a vertex. Model of the Handle concept.

ParameterizationMesh_3::Vertex_const_handle
ParameterizationMesh_3::Vertex_iterator
Iterator over all vertices of a mesh. Model of the ForwardIterator concept.

ParameterizationMesh_3::Vertex_const_iterator
ParameterizationMesh_3::Border_vertex_iterator
Iterator over vertices of the mesh main border. Model of the ForwardIterator concept.

ParameterizationMesh_3::Border_vertex_const_iterator
ParameterizationMesh_3::Vertex_around_facet_circulator
Counter-clockwise circulator over a facet's vertices. Model of the BidirectionalCirculator concept.

ParameterizationMesh_3::Vertex_around_facet_const_circulator
ParameterizationMesh_3::Vertex_around_vertex_circulator
Clockwise circulator over the vertices incident to a vertex. Model of the BidirectionalCirculator concept.

ParameterizationMesh_3::Vertex_around_vertex_const_circulator

Creation

Construction and destruction are undefined.

Operations

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
mesh.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.
Vertex_around_vertex_const_circulator
mesh.vertices_around_vertex_begin ( Vertex_const_handle vertex,
Vertex_const_handle start_position = Vertex_const_handle())
const

Has Models

We provide 2 models of this concept:

Parameterization_polyhedron_adaptor_3<Polyhedron_3_>
Parameterization_mesh_patch_3<ParameterizationPatchableMesh_3>

See Also

ParameterizationPatchableMesh_3