CGAL 6.1 - Planar Parameterization of Triangulated Surface Meshes

Loading...
Searching...
No Matches
Modules | Files
Reference Manual

##

Laurent Saboret, Pierre Alliez, Bruno Lévy, Mael Rouxel-Labbé, Andreas Fabri, and Hardik Jain
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 As Rigid As Possible Parameterization, Discrete Authalic Parameterization, Discrete Conformal Map, Floater Mean Value Coordinates, Least Squares Conformal Maps, Orbifold Tutte Embedding, or Tutte Barycentric Mapping. The code is generic and works with any model of the `FaceGraph` concept.
Introduced in: CGAL 3.2
Depends on: CGAL and Solvers
BibTeX: cgal:salf-pptsm2-25b
License: GPL
Windows Demo: CGAL Lab

## Classified Reference Pages

## Main Function

- `CGAL::Surface_mesh_parameterization::parameterize()`

## Concepts

- `Parameterizer_3`

## Surface Parameterization Methods

This CGAL package implements several parameterization methods:

- Fixed border:
  - Tutte Barycentric Mapping [12] : One-to-one mapping is guaranteed for convex border.
  - Discrete Authalic Parameterization [2] : Conditionally guaranteed if all weights are positive and border is convex.
  - Discrete Conformal Map [3] : Conditionally guaranteed if all weights are positive and border is convex.
  - Floater Mean Value Coordinates [4] : One-to-one mapping is guaranteed for convex border.
  - Iterative Authalic Parameterization [6].
- Free border:
  - As Rigid As Possible Parameterization [9]
  - Least Squares Conformal Maps (LSCM) [8].
- Borderless:
  - Orbifold Tutte Embeddings [1].

The following classes implement the methods listed above:

- `CGAL::Surface_mesh_parameterization::ARAP_parameterizer_3<TriangleMesh, BorderParameterizer, SolverTraits>`
- `CGAL::Surface_mesh_parameterization::Barycentric_mapping_parameterizer_3<TriangleMesh, BorderParameterizer, SolverTraits>`
- `CGAL::Surface_mesh_parameterization::Discrete_authalic_parameterizer_3<TriangleMesh, BorderParameterizer, SolverTraits>`
- `CGAL::Surface_mesh_parameterization::Discrete_conformal_map_parameterizer_3<TriangleMesh, BorderParameterizer, SolverTraits>`
- `CGAL::Surface_mesh_parameterization::Iterative_authalic_parameterizer_3<TriangleMesh, BorderParameterizer, SolverTraits>`
- `CGAL::Surface_mesh_parameterization::LSCM_parameterizer_3<TriangleMesh, BorderParameterizer>`
- `CGAL::Surface_mesh_parameterization::Mean_value_coordinates_parameterizer_3<TriangleMesh, BorderParameterizer, SolverTraits>`
- `CGAL::Surface_mesh_parameterization::Orbifold_Tutte_parameterizer_3<TriangleMesh, SolverTraits>`

## 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 common border parameterization methods:

- For fixed border methods:
  - the user can select a border parameterization among two common methods: uniform or arc-length parameterizations.
  - the user can select a convex shape among a set of standard ones (circle, square).
- For free border methods: at least two constraints (the pinned vertices).

The following classes implement the methods listed above:

- `CGAL::Surface_mesh_parameterization::Circular_border_uniform_parameterizer_3<TriangleMesh>`
- `CGAL::Surface_mesh_parameterization::Circular_border_arc_length_parameterizer_3<TriangleMesh>`
- `CGAL::Surface_mesh_parameterization::Fixed_border_parameterizer_3<TriangleMesh, BorderParameterizer, SolverTraits>`
- `CGAL::Surface_mesh_parameterization::Square_border_uniform_parameterizer_3<TriangleMesh>`
- `CGAL::Surface_mesh_parameterization::Square_border_arc_length_parameterizer_3<TriangleMesh>`
- `CGAL::Surface_mesh_parameterization::Two_vertices_parameterizer_3<TriangleMesh>`

## Mesh

The general definition of input meshes handled directly by `CGAL::Surface_mesh_parameterization::parameterize()` is a triangulated surface mesh model of `FaceGraph` that is homeomorphic to a disc (may have holes). In particular, it means that it must be 2-manifold and oriented.

## Checks and Assertions

The package performs the next checks:

- For fixed border parameterizations:
  - Preconditions:
    - the border is mapped onto a convex polygon.
    - the input mesh is triangular.
    - the input mesh is a surface with one connected component.
- For free border parameterizations:
  - Preconditions:
    - the input mesh is triangular.
    - the input mesh is a surface with one connected component.
- For borderless parameterizations:
  - Preconditions:
    - the input mesh is triangular.
    - the input mesh is a surface with one connected component.

## Modules
| Main Functions
| The central functions, main entry point of the package.
| Enums
| The enum classes defined and used in this package.
| Concepts
| The concepts of this package.
| 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).

## Files
file | surface_mesh_parameterization.h
| Convenience header file including the headers for all the free functions of this package.