CGAL 6.1 - Planar Parameterization of Triangulated Surface Meshes

Loading...
Searching...
No Matches
List of all members | Public Types | Public Member Functions | Protected Member Functions
CGAL::Surface_mesh_parameterization::Discrete_conformal_map_parameterizer_3< TriangleMesh_, BorderParameterizer_, SolverTraits_ > Class Template Reference
Reference Manual » Surface Parameterization Methods

`#include <CGAL/Surface_mesh_parameterization/Discrete_conformal_map_parameterizer_3.h>`

## Inherits from

CGAL::Surface_mesh_parameterization::Fixed_border_parameterizer_3< TriangleMesh_, BorderParameterizer_, SolverTraits_ >.

## Definition

template<typename TriangleMesh_, typename BorderParameterizer_ = Default, typename SolverTraits_ = Default>
class CGAL::Surface_mesh_parameterization::Discrete_conformal_map_parameterizer_3< TriangleMesh_, BorderParameterizer_, SolverTraits_ >

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

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

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

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

This class is a strategy called by the main parameterization algorithm `Fixed_border_parameterizer_3::parameterize()` and it:

- provides the template parameters `BorderParameterizer_` and `SolverTraits_`.
- implements `compute_w_ij()` to compute `w_ij`, the `(i,j)`-coefficient of matrix `A`, for `j` neighbor vertex of `i`, based on Discrete Conformal Map method.

Is model of
  `Parameterizer_3`

Template Parameters

  TriangleMesh_ | must be a model of `FaceGraph`
  BorderParameterizer_ | is a strategy to parameterize the surface border and must be a model of `Parameterizer_3`. Default: Circular_border_arc_length_parameterizer_3<TriangleMesh_>. CGAL::Surface_mesh_parameterization::Circular_border_arc_length_parameterizer_3 This class parameterizes the border of a 3D surface onto a circle, with an arc-length parameterizatio... Definition: Circular_border_parameterizer_3.h:244
  SolverTraits_ | must be a model of `SparseLinearAlgebraTraits_d`. Note that the system is not symmetric because `Fixed_border_parameterizer_3` does not remove border vertices from the system. Default: If Eigen 3.1 (or greater) is available and `CGAL_EIGEN3_ENABLED` is defined, then an overload of `Eigen_solver_traits` is provided as default parameter: CGAL::Eigen_solver_traits< Eigen::BiCGSTAB<Eigen_sparse_matrix<double>::EigenType, Eigen::IncompleteLUT< double > > > CGAL::Eigen_solver_traits

See also
  `CGAL::Surface_mesh_parameterization::Fixed_border_parameterizer_3<TriangleMesh, BorderParameterizer, SolverTraits>`

## Public Types
typedef Border_parameterizer_ | Border_parameterizer
| Border parameterizer type.
typedef SolverTraits_ | Solver_traits
| Solver traits type.
typedef TriangleMesh_ | Triangle_mesh
| Triangle mesh type.
Public Types inherited from CGAL::Surface_mesh_parameterization::Fixed_border_parameterizer_3< TriangleMesh_, BorderParameterizer_, SolverTraits_ >
typedef Border_parameterizer_ | Border_parameterizer
| Border parameterizer type.
typedef SolverTraits_ | Solver_traits
| Solver traits type.
typedef TriangleMesh_ | Triangle_mesh
| Triangle mesh type.
typedef boost::graph_traits< Triangle_mesh >::vertex_descriptor | vertex_descriptor
| Mesh vertex type.
typedef boost::graph_traits< Triangle_mesh >::halfedge_descriptor | halfedge_descriptor
| Mesh halfedge type.
typedef Solver_traits::Vector | Vector
| Solver vector type.
typedef Solver_traits::Matrix | Matrix
| Solver matrix type.

## Public Member Functions
| Discrete_conformal_map_parameterizer_3 (Border_parameterizer border_param=Border_parameterizer(), Solver_traits sparse_la=Solver_traits())
| Constructor.
Public Member Functions inherited from CGAL::Surface_mesh_parameterization::Fixed_border_parameterizer_3< TriangleMesh_, BorderParameterizer_, SolverTraits_ >
| Fixed_border_parameterizer_3 (Border_parameterizer border_param=Border_parameterizer(), Solver_traits sparse_la=Solver_traits())
| Constructor.
virtual | ~Fixed_border_parameterizer_3 ()
| Destructor of base class should be virtual.
template<typename VertexUVmap , typename VertexIndexMap , typename VertexParameterizedMap >
Error_code | parameterize (Triangle_mesh &mesh, halfedge_descriptor bhd, VertexUVmap uvmap, VertexIndexMap vimap, VertexParameterizedMap vpmap)
| computes a one-to-one mapping from a triangular 3D surface mesh to a piece of the 2D space.

## Protected Member Functions
virtual NT | compute_w_ij (const Triangle_mesh &mesh, vertex_descriptor main_vertex_v_i, Vertex_around_target_circulator< Triangle_mesh > neighbor_vertex_v_j) const
| computes `w_ij`, the `(i,j)`-coefficient of matrix `A`, for `j` neighbor vertex of `i`.
Protected Member Functions inherited from CGAL::Surface_mesh_parameterization::Fixed_border_parameterizer_3< TriangleMesh_, BorderParameterizer_, SolverTraits_ >
template<typename VertexUVmap , typename VertexIndexMap >
void | initialize_system_from_mesh_border (Matrix &A, Vector &Bu, Vector &Bv, const Triangle_mesh &mesh, halfedge_descriptor bhd, VertexUVmap uvmap, VertexIndexMap vimap) const
| initializes `A`, `Bu` and `Bv` after border parameterization.
virtual NT | compute_w_ij (const Triangle_mesh &mesh, vertex_descriptor main_vertex_v_i, Vertex_around_target_circulator< Triangle_mesh > neighbor_vertex_v_j) const =0
| computes `w_ij`, coefficient of matrix `A` for `j` neighbor vertex of `i`.
template<typename VertexIndexMap >
Error_code | setup_inner_vertex_relations (Matrix &A, Vector &, Vector &, const Triangle_mesh &mesh, vertex_descriptor vertex, VertexIndexMap vimap) const
| Compute the line i of matrix A for i inner vertex:
Border_parameterizer & | get_border_parameterizer ()
| Get the object that maps the surface's border onto a 2D space.
Solver_traits & | get_linear_algebra_traits ()
| Get the sparse linear algebra (traits object to access the linear system).

## Constructor & Destructor Documentation

## ◆ Discrete_conformal_map_parameterizer_3()

template<typename TriangleMesh_ , typename BorderParameterizer_ = Default, typename SolverTraits_ = Default>

CGAL::Surface_mesh_parameterization::Discrete_conformal_map_parameterizer_3< TriangleMesh_, BorderParameterizer_, SolverTraits_ >::Discrete_conformal_map_parameterizer_3 | ( | Border_parameterizer | border_param = `Border_parameterizer()`,
|  | Solver_traits | sparse_la = `Solver_traits()`
| ) |  |

Constructor.

Parameters

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

## Member Function Documentation

## ◆ compute_w_ij()

template<typename TriangleMesh_ , typename BorderParameterizer_ = Default, typename SolverTraits_ = Default>

virtual NT CGAL::Surface_mesh_parameterization::Discrete_conformal_map_parameterizer_3< TriangleMesh_, BorderParameterizer_, SolverTraits_ >::compute_w_ij | ( | const Triangle_mesh & | mesh,
|  | vertex_descriptor | main_vertex_v_i,
|  | Vertex_around_target_circulator< Triangle_mesh > | neighbor_vertex_v_j
| ) |  | const
| protected virtual

computes `w_ij`, the `(i,j)`-coefficient of matrix `A`, for `j` neighbor vertex of `i`.

Parameters

  mesh | a triangulated surface.
  main_vertex_v_i | the vertex of `mesh` with index `i`
  neighbor_vertex_v_j | the vertex of `mesh` with index `j`

Implements CGAL::Surface_mesh_parameterization::Fixed_border_parameterizer_3< TriangleMesh_, BorderParameterizer_, SolverTraits_ >.