CGAL 4.8.2 - Planar Parameterization of Triangulated Surface Meshes
Triangulated Surface Mesh Parameterization Reference
Laurent Saboret, Pierre Alliez and Bruno Lévy
Parameterizing a surface amounts to finding a one-to-one mapping from a suitable domain to the surface. In this package, we focus on triangulated surfaces that are homeomorphic to a disk and on piecewise linear mappings into a planar domain. This package implements several surface mesh parameterization methods, such as least squares conformal maps, discrete conformal map, discrete authalic parameterization, Floater mean value coordinates or Tutte barycentric mapping.

Introduced in: CGAL 3.2
Depends on: CGAL and Solvers
BibTeX: cgal:sal-pptsm2-16b
Windows Demo: Operations on Polyhedra
Common Demo Dlls: dlls

## Main Function

• CGAL::parameterize()

## Concepts

• ParameterizerTraits_3
• BorderParameterizer_3
• ParameterizationMesh_3
• ParameterizationPatchableMesh_3
• PolyhedronTraitsWithKernel_3

## Surface Parameterization Methods

This CGAL package implements several parameterization methods:

• Fixed border:
• Tutte Barycentric Mapping [9]. One-to-one mapping is guaranteed for convex border.
• Floater Mean Value Coordinates [5]. One-to-one mapping is guaranteed for convex border.
• Discrete Conformal Map [3]. Conditionally guaranteed if all weights are positive and border is convex.
• Discrete Authalic parameterization [2]. Conditionally guaranteed if all weights are positive and border is convex.
• Free border:
• Least Squares Conformal Maps [7].
• CGAL::Parameterizer_traits_3<ParameterizationMesh_3>
• CGAL::Fixed_border_parameterizer_3<ParameterizationMesh_3, BorderParameterizer_3, SparseLinearAlgebraTraits_d>
• CGAL::Barycentric_mapping_parameterizer_3<ParameterizationMesh_3, BorderParameterizer_3, SparseLinearAlgebraTraits_d>
• CGAL::Discrete_authalic_parameterizer_3<ParameterizationMesh_3, BorderParameterizer_3, SparseLinearAlgebraTraits_d>
• CGAL::Discrete_conformal_map_parameterizer_3<ParameterizationMesh_3, BorderParameterizer_3, SparseLinearAlgebraTraits_d>
• CGAL::LSCM_parameterizer_3<ParameterizationMesh_3, BorderParameterizer_3>
• CGAL::Mean_value_coordinates_parameterizer_3<ParameterizationMesh_3, BorderParameterizer_3, SparseLinearAlgebraTraits_d>

## Border Parameterization Methods

Border parameterization methods define a set of constraints (a constraint specifies two (u,v) coordinates for each instance of a vertex along the border).

This package implements all common border parameterization methods:

• For fixed border methods:
• the user can select a border parameterization among two common methods: uniform or arc-length parameterizations.
• one convex shape specified by:
• one shape among a set of standard ones (circle, square).
• For free border methods: at least two constraints (the pinned vertices).
• CGAL::Circular_border_arc_length_parameterizer_3<ParameterizationMesh_3>
• CGAL::Circular_border_uniform_parameterizer_3<ParameterizationMesh_3>
• CGAL::Square_border_arc_length_parameterizer_3<ParameterizationMesh_3>
• CGAL::Square_border_uniform_parameterizer_3<ParameterizationMesh_3>
• CGAL::Two_vertices_parameterizer_3<ParameterizationMesh_3>

## Mesh

The general definition of input meshes handled directly by CGAL::parameterize() is:

• Model of ParameterizationMesh_3.
• Triangulated.
• 2-manifold.
• Oriented.
• Homeomorphic to a disc (may have holes).

This package provides a model of the ParameterizationMesh_3 concept to access CGAL::Polyhedron_3<Traits>:

• CGAL::Parameterization_polyhedron_adaptor_3<Polyhedron_3_>

The meshes supported indirectly by the package can be of any genus and have any number of connected components. If it is not a topological disc, the input mesh has to come with a description of a cutting path (an oriented list of vertices) which is the border of a topological disc. If no cutting path is given as input, we assume that the surface border is the longest border already in the input mesh (the other borders will be considered as holes).

The CGAL::Parameterization_mesh_patch_3<ParameterizationPatchableMesh_3> class is responsible for virtually cutting a patch in a ParameterizationPatchableMesh_3 mesh. The resulting patch is a topological disk (if the input cutting path is correct) and provides a ParameterizationMesh_3 interface. It can be used as parameter of CGAL::parameterize().

Note that this way the user is responsible for cutting a closed mesh of arbitrary genus (even a topological disc with an intricate seam cut), as long as this condition is fulfilled.

The package provides an interface with CGAL::Polyhedron_3<Traits>:

• CGAL::Parameterization_polyhedron_adaptor_3<Polyhedron_3_>

## Output

A (u,v) pair is computed for each inner vertex (i.e. its halfedges share the same (u,v) pair), while a (u,v) pair is computed for each border halfedge. The user must iterate over the mesh halfedges to get the result.

## Helper Classes

• CGAL::Parameterization_mesh_feature_extractor<ParameterizationMesh_3>

## Checks and Assertions

The package performs the next checks:

For fixed border parameterizations:

• Preconditions:
• check that the border is mapped onto a convex polygon.
• check that the input mesh is triangular.
• check that the input mesh is a surface with one connected component.
• Postconditions:
• check one-to-one mapping.

• Preconditions:
• check that the input mesh is triangular.
• check that the input mesh is a surface with one connected component. -Postconditions:
• check one-to-one mapping.

Assertions are optional checks. The assertion flags for the package use SURFACE_MESH_PARAMETERIZATION in their names (e.g. CGAL_SURFACE_MESH_PARAMETERIZATION_NO_ASSERTIONS).

## Modules

Main Function

Concepts

Surface Parameterization Methods
This CGAL package implements several parameterization methods:

Border Parameterization Methods
Border parameterization methods define a set of constraints (a constraint specifies two (u,v) coordinates for each instance of a vertex along the border).

Mesh
The general definition of input meshes handled directly by CGAL::parameterize() is:

Helper Class