\( \newcommand{\E}{\mathrm{E}} \) \( \newcommand{\A}{\mathrm{A}} \) \( \newcommand{\R}{\mathrm{R}} \) \( \newcommand{\N}{\mathrm{N}} \) \( \newcommand{\Q}{\mathrm{Q}} \) \( \newcommand{\Z}{\mathrm{Z}} \) \( \def\ccSum #1#2#3{ \sum_{#1}^{#2}{#3} } \def\ccProd #1#2#3{ \sum_{#1}^{#2}{#3} }\)
CGAL 4.10.1 - Planar Parameterization of Triangulated Surface Meshes
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Groups Pages
CGAL::LSCM_parameterizer_3< ParameterizationMesh_3, BorderParameterizer_3, SparseLinearAlgebraTraits_d > Class Template Reference

#include <CGAL/LSCM_parameterizer_3.h>

Inherits from

CGAL::Parameterizer_traits_3< ParameterizationMesh_3 >.

Definition

template<class ParameterizationMesh_3, class BorderParameterizer_3 = Two_vertices_parameterizer_3<ParameterizationMesh_3>, class SparseLinearAlgebraTraits_d = Eigen_solver_traits<Eigen::SimplicialLDLT<Eigen_sparse_symmetric_matrix<double>::EigenType> >>
class CGAL::LSCM_parameterizer_3< ParameterizationMesh_3, BorderParameterizer_3, SparseLinearAlgebraTraits_d >

The class LSCM_parameterizer_3 implements the Least Squares Conformal Maps (LSCM) parameterization.

[7].

This is a conformal parameterization, i.e. it attempts to preserve angles.

This is a free border parameterization. No need to map the border of the surface onto a convex polygon (only two pinned vertices are needed to ensure a unique solution), but one-to-one mapping is not guaranteed.

Note that his parametrization method has no template parameter for changing the sparse solver.

Is Model Of:
ParameterizerTraits_3
See Also
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>
Examples:
Surface_mesh_parameterization/polyhedron_ex_parameterization.cpp.

Public Types

typedef BorderParameterizer_3 Border_param
 Export BorderParameterizer_3 template parameter.
 
- Public Types inherited from CGAL::Parameterizer_traits_3< ParameterizationMesh_3 >
enum  Error_code {
  OK, ERROR_EMPTY_MESH, ERROR_NON_TRIANGULAR_MESH, ERROR_NO_TOPOLOGICAL_DISC,
  ERROR_BORDER_TOO_SHORT, ERROR_NON_CONVEX_BORDER, ERROR_CANNOT_SOLVE_LINEAR_SYSTEM, ERROR_NO_1_TO_1_MAPPING,
  ERROR_OUT_OF_MEMORY, ERROR_WRONG_PARAMETER
}
 List of errors detected by this package. More...
 
typedef ParameterizationMesh_3 Adaptor
 Export ParameterizationMesh_3 template parameter.
 

Public Member Functions

 LSCM_parameterizer_3 (Border_param border_param=Border_param(), Sparse_LA sparse_la=Sparse_LA())
 Constructor. More...
 
virtual Error_code parameterize (Adaptor &mesh)
 Compute a one-to-one mapping from a triangular 3D surface mesh to a piece of the 2D space. More...
 
- Public Member Functions inherited from CGAL::Parameterizer_traits_3< ParameterizationMesh_3 >
virtual ~Parameterizer_traits_3 ()
 Destructor of base class should be virtual.
 

Additional Inherited Members

- Static Public Member Functions inherited from CGAL::Parameterizer_traits_3< ParameterizationMesh_3 >
static const char * get_error_message (int error_code)
 Get message corresponding to an error code. More...
 
- Protected Types inherited from CGAL::Parameterizer_traits_3< ParameterizationMesh_3 >
typedef Adaptor::NT NT
 
typedef Adaptor::Point_2 Point_2
 
typedef Adaptor::Point_3 Point_3
 
typedef Adaptor::Vector_2 Vector_2
 
typedef Adaptor::Vector_3 Vector_3
 
typedef Adaptor::Facet Facet
 
typedef Adaptor::Facet_handle Facet_handle
 
typedef Adaptor::Facet_const_handle Facet_const_handle
 
typedef Adaptor::Facet_iterator Facet_iterator
 
typedef
Adaptor::Facet_const_iterator 
Facet_const_iterator
 
typedef Adaptor::Vertex Vertex
 
typedef Adaptor::Vertex_handle Vertex_handle
 
typedef
Adaptor::Vertex_const_handle 
Vertex_const_handle
 
typedef Adaptor::Vertex_iterator Vertex_iterator
 
typedef
Adaptor::Vertex_const_iterator 
Vertex_const_iterator
 
typedef
Adaptor::Border_vertex_iterator 
Border_vertex_iterator
 
typedef
Adaptor::Border_vertex_const_iterator 
Border_vertex_const_iterator
 
typedef
Adaptor::Vertex_around_facet_circulator 
Vertex_around_facet_circulator
 
typedef
Adaptor::Vertex_around_facet_const_circulator 
Vertex_around_facet_const_circulator
 
typedef
Adaptor::Vertex_around_vertex_circulator 
Vertex_around_vertex_circulator
 
typedef
Adaptor::Vertex_around_vertex_const_circulator 
Vertex_around_vertex_const_circulator
 

Constructor & Destructor Documentation

template<class ParameterizationMesh_3 , class BorderParameterizer_3 = Two_vertices_parameterizer_3<ParameterizationMesh_3>, class SparseLinearAlgebraTraits_d = Eigen_solver_traits<Eigen::SimplicialLDLT<Eigen_sparse_symmetric_matrix<double>::EigenType> >>
CGAL::LSCM_parameterizer_3< ParameterizationMesh_3, BorderParameterizer_3, SparseLinearAlgebraTraits_d >::LSCM_parameterizer_3 ( Border_param  border_param = Border_param(),
Sparse_LA  sparse_la = Sparse_LA() 
)

Constructor.

Parameters
border_paramObject that maps the surface's border to 2D space
sparse_laTraits object to access a sparse linear system

Member Function Documentation

template<class Adaptor , class Border_param , class Sparse_LA >
LSCM_parameterizer_3< Adaptor, Border_param, Sparse_LA >::Error_code CGAL::LSCM_parameterizer_3< Adaptor, Border_param, Sparse_LA >::parameterize ( Adaptor mesh)
virtual

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.

Precondition
mesh must be a surface with one connected component.
mesh must be a triangular mesh.

Implements CGAL::Parameterizer_traits_3< ParameterizationMesh_3 >.