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

All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Groups Pages
List of all members | Public Types | Public Member Functions | Public Attributes
CGAL::Parameterization_mesh_patch_3< ParameterizationPatchableMesh_3 > Class Template Reference
Mesh

`#include <CGAL/Parameterization_mesh_patch_3.h>`

## Definition

Parameterization_mesh_patch_3 is a Decorator class to virtually cut a patch in a ParameterizationPatchableMesh_3 3D surface.

Only the patch is exported, making the 3D surface look like a topological disk.

The input mesh can be of any genus, but it has to come with a seam that describes the border of a topological disc. This border may be an actual border of the mesh or a virtual border.

Is Model Of:
  `ParameterizationMesh_3`

Template Parameters

  ParameterizationPatchableMesh_3 | 3D surface mesh.

Examples:
  Surface_mesh_parameterization/Complete_parameterization_example.cpp, Surface_mesh_parameterization/Mesh_cutting_parameterization.cpp, and Surface_mesh_parameterization/polyhedron_ex_parameterization.cpp.

## Public Types
typedef ParameterizationPatchableMesh_3 | Adaptor
| Export template parameter.

## Public Member Functions
template<class InputIterator >
| Parameterization_mesh_patch_3 (Adaptor &mesh, InputIterator first_seam_vertex, InputIterator end_seam_vertex)
| Create a Decorator for an existing ParameterizationPatchableMesh_3 mesh. More...
Adaptor & | get_decorated_mesh ()
const Adaptor & | get_decorated_mesh () const

## Public Attributes
Adaptor & | m_mesh_adaptor
| The decorated mesh.

## Methods implementing the ParameterizationMesh_3 interface
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 (aka seam).
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 (aka seam).
Border_vertex_const_iterator | mesh_main_border_vertices_end () const
std::list< Vertex_handle > | get_border (Vertex_handle seed_vertex)
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. Default value is undefined.
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. Default value is undefined.
void | set_vertex_parameterized (Vertex_handle vertex, bool parameterized)
int | get_vertex_index (Vertex_const_handle vertex) const
| Get/set vertex index. Default value is undefined.
void | set_vertex_index (Vertex_handle vertex, int index)
int | get_vertex_tag (Vertex_const_handle vertex) const
| Get/set vertex' all purpose tag. Default value is undefined.
void | set_vertex_tag (Vertex_handle vertex, int tag)
bool | is_vertex_on_border (Vertex_const_handle vertex) const
| Return `true` if `vertex` belongs to the border of any mesh.
bool | is_vertex_on_main_border (Vertex_const_handle vertex) const
| Return `true` if `vertex` belongs to the UNIQUE mesh's main border set by the constructor. More...
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

## Constructor & Destructor Documentation

template<class ParameterizationPatchableMesh_3 >
template<class InputIterator >

CGAL::Parameterization_mesh_patch_3< ParameterizationPatchableMesh_3 >::Parameterization_mesh_patch_3 | ( | Adaptor & | mesh,
|  | InputIterator | first_seam_vertex,
|  | InputIterator | end_seam_vertex
| ) |  |

Create a Decorator for an existing ParameterizationPatchableMesh_3 mesh.

The input mesh can be of any genus, but it has to come with a seam that describes the border of a topological disc. This border may be an actual border of the mesh or a virtual border.

Precondition
  `first_seam_vertex -> end_seam_vertex` defines the outer seam, i.e. Parameterization_mesh_patch_3 will export the right of the seam.
  The seam is given as a container of `Adaptor::Vertex_handle` elements.
  The seam is implicitely a loop. The first vertex must not be duplicated at the end.

## Member Function Documentation

template<class ParameterizationPatchableMesh_3 >

std::list<Vertex_handle> CGAL::Parameterization_mesh_patch_3< ParameterizationPatchableMesh_3 >::get_border | ( | Vertex_handle | seed_vertex) |  |

Returns
  the border containing seed_vertex (or an empty list if not found).

Parameters

  seed_vertex | a border vertex.

template<class ParameterizationPatchableMesh_3 >

Adaptor& CGAL::Parameterization_mesh_patch_3< ParameterizationPatchableMesh_3 >::get_decorated_mesh | ( | ) |  |

Returns
  the decorated mesh.

template<class ParameterizationPatchableMesh_3 >

bool CGAL::Parameterization_mesh_patch_3< ParameterizationPatchableMesh_3 >::is_vertex_on_main_border | ( | Vertex_const_handle | vertex) |  | const

Return `true` if `vertex` belongs to the UNIQUE mesh's main border set by the constructor.

template<class ParameterizationPatchableMesh_3 >

Vertex_around_vertex_circulator CGAL::Parameterization_mesh_patch_3< ParameterizationPatchableMesh_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.