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.
Main Function
Concepts
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:
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.