mirror of https://github.com/CGAL/cgal
167 lines
7.1 KiB
Plaintext
167 lines
7.1 KiB
Plaintext
/// \defgroup PkgSurfaceParameterization Triangulated Surface Mesh Parameterization Reference
|
|
|
|
|
|
/*!
|
|
\addtogroup PkgSurfaceParameterization
|
|
\cgalPkgDescriptionBegin{Triangulated Surface Mesh Parameterization,PkgSurfaceParameterizationSummary}
|
|
\cgalPkgPicture{bimbaDetail.png}
|
|
\cgalPkgSummaryBegin
|
|
\cgalPkgAuthors{Laurent Saboret, Pierre Alliez, Bruno Lévy, Mael Rouxel-Labbé, and Andreas Fabri}
|
|
\cgalPkgDesc{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 `FaceListGraph` concept.}
|
|
\cgalPkgManuals{Chapter_Planar_Parameterization_of_Triangulated_Surface_Meshes, PkgSurfaceParameterization}
|
|
\cgalPkgSummaryEnd
|
|
\cgalPkgShortInfoBegin
|
|
\cgalPkgSince{3.2}
|
|
\cgalPkgDependsOn{\ref PkgSolverSummary}
|
|
\cgalPkgBib{cgal:salf-pptsm2}
|
|
\cgalPkgLicense{\ref licensesGPL "GPL"}
|
|
\cgalPkgDemo{Polyhedron demo,polyhedron_3.zip}
|
|
\cgalPkgShortInfoEnd
|
|
\cgalPkgDescriptionEnd
|
|
|
|
\cgalClassifedRefPages
|
|
|
|
## 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 \cgalCite{t-hdg-63} :
|
|
One-to-one mapping is guaranteed for convex border.
|
|
- Discrete Authalic Parameterization \cgalCite{cgal:dma-ipsm-02} :
|
|
Conditionally guaranteed if all weights are positive and border is convex.
|
|
- Discrete Conformal Map \cgalCite{cgal:eddhls-maam-95} :
|
|
Conditionally guaranteed if all weights are positive and border is convex.
|
|
- Floater Mean Value Coordinates \cgalCite{cgal:f-mvc-03} :
|
|
One-to-one mapping is guaranteed for convex border.
|
|
- Free border:
|
|
- As Rigid As Possible Parameterization \cgalCite{liu2008local}
|
|
- Least Squares Conformal Maps \cgalCite{cgal:lprm-lscm-02}.
|
|
- Borderless:
|
|
- Orbifold Tutte Embeddings \cgalCite{aigerman2015orbifold}.
|
|
|
|
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::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 <i>fixed</i> 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 <i>free</i> border parameterizations:
|
|
- Preconditions:
|
|
- the input mesh is triangular.
|
|
- the input mesh is a surface with one connected component.
|
|
- For <i>borderless</i> parameterizations:
|
|
- Preconditions:
|
|
- the input mesh is triangular.
|
|
- the input mesh is a surface with one connected component.
|
|
*/
|
|
|
|
/// \defgroup PkgSurfaceParameterizationMainFunction Main Function
|
|
/// \ingroup PkgSurfaceParameterization
|
|
|
|
/// \defgroup PkgSurfaceParameterizationEnums Enums
|
|
/// \ingroup PkgSurfaceParameterization
|
|
|
|
/// \defgroup PkgSurfaceParameterizationConcepts Concepts
|
|
/// \ingroup PkgSurfaceParameterization
|
|
|
|
/*!
|
|
\defgroup PkgSurfaceParameterizationMethods Surface Parameterization Methods
|
|
\ingroup PkgSurfaceParameterization
|
|
|
|
This \cgal package implements several parameterization methods:
|
|
|
|
- Fixed border:
|
|
- Tutte Barycentric Mapping \cgalCite{t-hdg-63}.
|
|
One-to-one mapping is guaranteed for convex border.
|
|
- Floater Mean Value Coordinates \cgalCite{cgal:f-mvc-03}.
|
|
One-to-one mapping is guaranteed for convex border.
|
|
- Discrete Conformal Map \cgalCite{cgal:eddhls-maam-95}.
|
|
Conditionally guaranteed if all weights are positive and border is convex.
|
|
- Discrete Authalic parameterization \cgalCite{cgal:dma-ipsm-02}.
|
|
Conditionally guaranteed if all weights are positive and border is convex.
|
|
- Free border:
|
|
- As Rigid As Possible Maps \cgalCite{liu2008local}
|
|
- Least Squares Conformal Maps \cgalCite{cgal:lprm-lscm-02}.
|
|
- Borderless:
|
|
- Orbifold Tutte Embeddings \cgalCite{aigerman2015orbifold}
|
|
*/
|
|
|
|
/*!
|
|
\defgroup PkgSurfaceParameterizationBorderParameterizationMethods Border Parameterization Methods
|
|
\ingroup PkgSurfaceParameterization
|
|
|
|
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.
|
|
- 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).
|
|
*/
|
|
|
|
*/
|
|
|