\( \newcommand{\E}{\mathrm{E}} \) \( \newcommand{\A}{\mathrm{A}} \) \( \newcommand{\R}{\mathrm{R}} \) \( \newcommand{\N}{\mathrm{N}} \) \( \newcommand{\Q}{\mathrm{Q}} \) \( \newcommand{\Z}{\mathrm{Z}} \) \( \def\ccSum #1#2#3{ \sum_{#1}^{#2}{#3} } \def\ccProd #1#2#3{ \sum_{#1}^{#2}{#3} }\)
CGAL 4.7 - Planar Parameterization of Triangulated Surface Meshes
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Groups Pages
ParameterizationMesh_3 Concept Reference

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 [6] : it changes the interface of a 3D mesh to match the interface expected by the parameterization methods.

Creation

Construction and destruction are undefined.

We provide 2 models of this concept:

Has Models:

CGAL::Parameterization_polyhedron_adaptor_3<Polyhedron_3_>

CGAL::Parameterization_mesh_patch_3<ParameterizationPatchableMesh_3>

See Also
ParameterizationPatchableMesh_3
Examples:
Surface_mesh_parameterization/polyhedron_ex_parameterization.cpp.

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.

typedef unspecified_type NT
 Number type to represent coordinates.
 
typedef unspecified_type Point_2
 2D point that represents (u, v) coordinates computed by parameterization methods. More...
 
typedef unspecified_type Point_3
 3D point that represents vertices coordinates. More...
 
typedef unspecified_type Vector_2
 2D vector. More...
 
typedef unspecified_type Vector_3
 3D vector. More...
 
typedef unspecified_type Facet
 Opaque type representing a facet of the 3D mesh. More...
 
typedef unspecified_type Facet_handle
 Handle to a facet. More...
 
typedef unspecified_type Facet_const_handle
 
typedef unspecified_type Facet_iterator
 Iterator over all mesh facets. More...
 
typedef unspecified_type Facet_const_iterator
 
typedef unspecified_type Vertex
 Opaque type representing a vertex of the 3D mesh. More...
 
typedef unspecified_type Vertex_handle
 Handle to a vertex. More...
 
typedef unspecified_type Vertex_const_handle
 
typedef unspecified_type Vertex_iterator
 Iterator over all vertices of a mesh. More...
 
typedef unspecified_type Vertex_const_iterator
 
typedef unspecified_type Border_vertex_iterator
 Iterator over vertices of the mesh main border. More...
 
typedef unspecified_type Border_vertex_const_iterator
 
typedef unspecified_type Vertex_around_facet_circulator
 Counter-clockwise circulator over a facet's vertices. More...
 
typedef unspecified_type Vertex_around_facet_const_circulator
 
typedef unspecified_type Vertex_around_vertex_circulator
 Clockwise circulator over the vertices incident to a vertex. More...
 
typedef unspecified_type Vertex_around_vertex_const_circulator
 

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 is_valid () const
 Indicate if the mesh matches the ParameterizationMesh_3 concept.
 
Vertex_iterator mesh_vertices_begin ()
 Get iterator over first vertex of mesh.
 
Vertex_const_iterator mesh_vertices_begin () const
 
Vertex_iterator mesh_vertices_end ()
 Get iterator over past-the-end vertex of mesh.
 
Vertex_const_iterator mesh_vertices_end () const
 
int count_mesh_vertices () const
 Count the number of vertices of the mesh.
 
void index_mesh_vertices ()
 Index vertices of the mesh from 0 to count_mesh_vertices()-1.
 
Border_vertex_iterator mesh_main_border_vertices_begin ()
 Get iterator over first vertex of mesh's main border.
 
Border_vertex_const_iterator mesh_main_border_vertices_begin () const
 
Border_vertex_iterator mesh_main_border_vertices_end ()
 Get iterator over past-the-end vertex of mesh's main border.
 
Border_vertex_const_iterator mesh_main_border_vertices_end () const
 
std::list< Vertex_handleget_border (Vertex_handle seed_vertex)
 Return the border containing seed_vertex. More...
 
Facet_iterator mesh_facets_begin ()
 Get iterator over first facet of mesh.
 
Facet_const_iterator mesh_facets_begin () const
 
Facet_iterator mesh_facets_end ()
 Get iterator over past-the-end facet of mesh.
 
Facet_const_iterator mesh_facets_end () const
 
int count_mesh_facets () const
 Count the number of facets of the mesh.
 
bool is_mesh_triangular () const
 Return true of all mesh's facets are triangles.
 
int count_mesh_halfedges () const
 Count the number of halfedges of the mesh.
 
Vertex_around_facet_circulator facet_vertices_begin (Facet_handle facet)
 Get circulator over facet's vertices.
 
Vertex_around_facet_const_circulator facet_vertices_begin (Facet_const_handle facet) const
 
int count_facet_vertices (Facet_const_handle facet) const
 Count the number of vertices of a facet.
 
Point_3 get_vertex_position (Vertex_const_handle vertex) const
 Get the 3D position of a vertex.
 
Point_2 get_vertex_uv (Vertex_const_handle vertex) const
 Get/set the 2D position (u/v pair) of a vertex. More...
 
void set_vertex_uv (Vertex_handle vertex, const Point_2 &uv)
 
bool is_vertex_parameterized (Vertex_const_handle vertex) const
 Get/set is parameterized field of vertex. More...
 
void set_vertex_parameterized (Vertex_handle vertex, bool parameterized)
 
int get_vertex_index (Vertex_const_handle vertex) const
 Get/set vertex index. More...
 
void set_vertex_index (Vertex_handle vertex, int index)
 
int get_vertex_tag (Vertex_const_handle vertex) const
 Get/set vertex' all purpose tag. More...
 
void set_vertex_tag (Vertex_handle vertex, int tag)
 
bool is_vertex_on_border (Vertex_const_handle vertex) const
 Return true if a vertex belongs to ANY mesh's border.
 
bool 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 vertices_around_vertex_begin (Vertex_handle vertex, Vertex_handle start_position=Vertex_handle())
 Get circulator over the vertices incident to vertex. More...
 
Vertex_around_vertex_const_circulator vertices_around_vertex_begin (Vertex_const_handle vertex, Vertex_const_handle start_position=Vertex_const_handle()) const
 

Member Typedef Documentation

Iterator over vertices of the mesh main border.

Model of the ForwardIterator concept.

Opaque type representing a facet of the 3D mesh.

No methods are expected.

Handle to a facet.

Model of the Handle concept.

Iterator over all mesh facets.

Model of the ForwardIterator concept.

2D point that represents (u, v) coordinates computed by parameterization methods.

Must provide x() and y() methods.

3D point that represents vertices coordinates.

Must provide x(), y() and z() methods.

2D vector.

Must provide x() and y() methods.

3D vector.

Must provide x(), y() and z() methods.

Opaque type representing a vertex of the 3D mesh.

No methods are expected.

Counter-clockwise circulator over a facet's vertices.

Model of the BidirectionalCirculator concept.

Clockwise circulator over the vertices incident to a vertex.

Model of the BidirectionalCirculator concept.

Handle to a vertex.

Model of the Handle concept.

Iterator over all vertices of a mesh.

Model of the ForwardIterator concept.

Member Function Documentation

std::list<Vertex_handle> ParameterizationMesh_3::get_border ( Vertex_handle  seed_vertex)

Return the border containing seed_vertex.

Return an empty list if not found.

int ParameterizationMesh_3::get_vertex_index ( Vertex_const_handle  vertex) const

Get/set vertex index.

Default value is undefined.

int ParameterizationMesh_3::get_vertex_tag ( Vertex_const_handle  vertex) const

Get/set vertex' all purpose tag.

Default value is undefined.

Point_2 ParameterizationMesh_3::get_vertex_uv ( Vertex_const_handle  vertex) const

Get/set the 2D position (u/v pair) of a vertex.

Default value is undefined.

bool ParameterizationMesh_3::is_vertex_parameterized ( Vertex_const_handle  vertex) const

Get/set is parameterized field of vertex.

Default value is undefined.

Vertex_around_vertex_circulator ParameterizationMesh_3::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.