CGAL 4.7 - Planar Parameterization of Triangulated Surface Meshes: CGAL::Discrete_conformal_map_parameterizer_3< ParameterizationMesh_3, BorderParameterizer_3, SparseLinearAlgebraTraits_d > Class Template Reference

\( \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.7 - Planar Parameterization of Triangulated Surface Meshes

All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Groups Pages
List of all members | Public Member Functions | Protected Member Functions
CGAL::Discrete_conformal_map_parameterizer_3< ParameterizationMesh_3, BorderParameterizer_3, SparseLinearAlgebraTraits_d > Class Template Reference
Surface Parameterization Methods

`#include <CGAL/Discrete_conformal_map_parameterizer_3.h>`

## Inherits from

CGAL::Fixed_border_parameterizer_3< ParameterizationMesh_3, BorderParameterizer_3, SparseLinearAlgebraTraits_d >.

## Definition

### template<class ParameterizationMesh_3, class BorderParameterizer_3 = Circular_border_arc_length_parameterizer_3<ParameterizationMesh_3>, class SparseLinearAlgebraTraits_d = OpenNL::DefaultLinearSolverTraits<typename ParameterizationMesh_3::NT>>
class CGAL::Discrete_conformal_map_parameterizer_3< ParameterizationMesh_3, BorderParameterizer_3, SparseLinearAlgebraTraits_d >

The class Discrete_conformal_map_parameterizer_3 implements the Discrete Conformal Map (DCM) parameterization.

[3]. This algorithm is also called Discrete Conformal Parameterization (DCP), Discrete Harmonic Map or Fixed Conformal Parameterization by other authors.

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

One-to-one mapping is guaranteed if surface's border is mapped onto a convex polygon.

This class is used by the main parameterization algorithm `Fixed_border_parameterizer_3::parameterize()`.

- It provides default `BorderParameterizer_3` and `SparseLinearAlgebraTraits_d` template parameters that make sense.
- It implements `compute_w_ij()` to compute w_ij = (i, j) coefficient of matrix A for j neighbor vertex of i based on Discrete Conformal Map method.

Is Model Of:
  `ParameterizerTraits_3`

Parameters

  ParameterizationMesh_3 | 3D surface mesh.
  BorderParameterizer_3 | Strategy to parameterize the surface border.
  SparseLinearAlgebraTraits_d | Traits class to solve a sparse linear system. Note: the system is not symmetric because `Fixed_border_parameterizer_3` does not remove (yet) border vertices from the system.

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::LSCM_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 Member Functions

| Discrete_conformal_map_parameterizer_3 (Border_param border_param=Border_param(), Sparse_LA sparse_la=Sparse_LA())
| Constructor. More...
Public Member Functions inherited from CGAL::Fixed_border_parameterizer_3< ParameterizationMesh_3, BorderParameterizer_3, SparseLinearAlgebraTraits_d >
| Fixed_border_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.

## Protected Member Functions

virtual NT | compute_w_ij (const Adaptor &mesh, Vertex_const_handle main_vertex_v_i, Vertex_around_vertex_const_circulator neighbor_vertex_v_j)
| Compute w_ij = (i,j) coefficient of matrix A for j neighbor vertex of i.
Protected Member Functions inherited from CGAL::Fixed_border_parameterizer_3< ParameterizationMesh_3, BorderParameterizer_3, SparseLinearAlgebraTraits_d >
virtual Error_code | check_parameterize_preconditions (Adaptor &mesh)
| Check parameterize() preconditions: More...
void | initialize_system_from_mesh_border (Matrix &A, Vector &Bu, Vector &Bv, const Adaptor &mesh)
| Initialize A, Bu and Bv after border parameterization. More...
virtual Error_code | setup_inner_vertex_relations (Matrix &A, Vector &Bu, Vector &Bv, const Adaptor &mesh, Vertex_const_handle vertex)
| Compute the line i of matrix A for i inner vertex: More...
void | set_mesh_uv_from_system (Adaptor &mesh, const Vector &Xu, const Vector &Xv)
| Copy Xu and Xv coordinates into the (u,v) pair of each surface vertex.
virtual Error_code | check_parameterize_postconditions (const Adaptor &mesh, const Matrix &A, const Vector &Bu, const Vector &Bv)
| Check parameterize() postconditions: More...
virtual bool | is_one_to_one_mapping (const Adaptor &mesh, const Matrix &A, const Vector &Bu, const Vector &Bv)
| Check if 3D -> 2D mapping is one-to-one. More...
Border_param & | get_border_parameterizer ()
| Get the object that maps the surface's border onto a 2D space.
Sparse_LA & | get_linear_algebra_traits ()
| Get the sparse linear algebra (traits object to access the linear system).

## Additional Inherited Members

Public Types inherited from CGAL::Fixed_border_parameterizer_3< ParameterizationMesh_3, BorderParameterizer_3, SparseLinearAlgebraTraits_d >
typedef BorderParameterizer_3 | Border_param
| Export BorderParameterizer_3 template parameter.
typedef SparseLinearAlgebraTraits_d | Sparse_LA
| Export SparseLinearAlgebraTraits_d template parameter.
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 = Circular_border_arc_length_parameterizer_3<ParameterizationMesh_3>, class SparseLinearAlgebraTraits_d = OpenNL::DefaultLinearSolverTraits<typename ParameterizationMesh_3::NT>>

CGAL::Discrete_conformal_map_parameterizer_3< ParameterizationMesh_3, BorderParameterizer_3, SparseLinearAlgebraTraits_d >::Discrete_conformal_map_parameterizer_3 | ( | Border_param | border_param = `Border_param()`,
|  | Sparse_LA | sparse_la = `Sparse_LA()`
| ) |  |

Constructor.

Parameters

  border_param | Object that maps the surface's border to 2D space.
  sparse_la | Traits object to access a sparse linear system.