\( \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.8 - Planar Parameterization of Triangulated Surface Meshes

All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Groups Pages
List of all members
ParameterizationMesh_3 Concept Reference
Concepts

## 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_handle > | get_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

typedef unspecified_type ParameterizationMesh_3::Border_vertex_iterator

Iterator over vertices of the mesh main border.

Model of the `ForwardIterator` concept.

typedef unspecified_type ParameterizationMesh_3::Facet

Opaque type representing a facet of the 3D mesh.

No methods are expected.

typedef unspecified_type ParameterizationMesh_3::Facet_handle

Handle to a facet.

Model of the Handle concept.

typedef unspecified_type ParameterizationMesh_3::Facet_iterator

Iterator over all mesh facets.

Model of the `ForwardIterator` concept.

typedef unspecified_type ParameterizationMesh_3::Point_2

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

Must provide `x()` and `y()` methods.

typedef unspecified_type ParameterizationMesh_3::Point_3

3D point that represents vertices coordinates.

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

typedef unspecified_type ParameterizationMesh_3::Vector_2

2D vector.

Must provide `x()` and `y()` methods.

typedef unspecified_type ParameterizationMesh_3::Vector_3

3D vector.

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

typedef unspecified_type ParameterizationMesh_3::Vertex

Opaque type representing a vertex of the 3D mesh.

No methods are expected.

typedef unspecified_type ParameterizationMesh_3::Vertex_around_facet_circulator

Counter-clockwise circulator over a facet's vertices.

Model of the `BidirectionalCirculator` concept.

typedef unspecified_type ParameterizationMesh_3::Vertex_around_vertex_circulator

Clockwise circulator over the vertices incident to a vertex.

Model of the `BidirectionalCirculator` concept.

typedef unspecified_type ParameterizationMesh_3::Vertex_handle

Handle to a vertex.

Model of the Handle concept.

typedef unspecified_type ParameterizationMesh_3::Vertex_iterator

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.