The class LSCM_parameterizer_3 implements the Least Squares Conformal Maps (LSCM) parameterization [LPRM02].
This is a conformal parameterization, i.e. it attempts to preserve angles.
This is a free border parameterization. No need to map the surface's border onto a convex polygon (only two pinned vertices are needed to ensure a unique solution), but one-to-one mapping is NOT guaranteed.
#include <CGAL/LSCM_parameterizer_3.h>
Model of the ParameterizerTraits_3 concept.
LSCM_parameterizer_3<ParameterizationMesh_3, ...> class is a Strategy [GHJV95]: it implements a strategy of surface parameterization for models of ParameterizationMesh_3.
The full template declaration is:
template
class ParameterizationMesh_3,
class BorderParameterizer_3 = Two_vertices_parameterizer_3<ParameterizationMesh_3>,
class SparseLinearAlgebraTraits_d = OpenNL::SymmetricLinearSolverTraits<typename ParameterizationMesh_3::NT>
class LSCM_parameterizer_3;
| |
Export BorderParameterizer_3 template parameter.
| |
| |
Export SparseLinearAlgebraTraits_d template parameter.
|
| |||
Constructor.
|
| ||||
| ||||
Compute a one-to-one mapping from a triangular 3D surface 'mesh' to a piece of the 2D space. The mapping is linear by pieces (linear in each triangle). The result is the (u,v) pair image of each vertex of the 3D surface.
Preconditions:
| ||||
| ||||
| ||||
Check parameterize() preconditions:
| ||||
|
| |||
Initialize AX = B linear system after (at least two) border vertices are parameterized.
Preconditions:
| ||||
|
| |||
Utility for setup_triangle_relations(): Computes the coordinates of the vertices of a triangle in a local 2D orthonormal basis of the triangle's plane. | ||||
| ||||
| ||||
Create two lines in the linear system per triangle (one for u, one for v).
Preconditions:
| ||||
|
| |||
Copy X coordinates into the (u,v) pair of each vertex. | ||||
| ||||
| ||||
Check parameterize() postconditions:
| ||||
|
| |||
Check if 3D - 2D mapping is one-to-one. | ||||
|
| Get the object that maps the surface's border onto a 2D space. | ||
|
| |||
Get the sparse linear algebra (traits object to access the linear system). |
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::Mean_value_coordinates_parameterizer_3<ParameterizationMesh_3, BorderParameterizer_3, SparseLinearAlgebraTraits_d>