\( \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.12 - Planar Parameterization of Triangulated Surface Meshes
CGAL::Surface_mesh_parameterization::MVC_post_processor_3< TriangleMesh_, SolverTraits_ > Class Template Reference

#include <CGAL/Surface_mesh_parameterization/MVC_post_processor_3.h>

Definition

template<class TriangleMesh_, class SolverTraits_ = Default>
class CGAL::Surface_mesh_parameterization::MVC_post_processor_3< TriangleMesh_, SolverTraits_ >

The class MVC_post_processor_3 implements the Free boundary linear Parameterization algorithm [6].

This parameterizer provides a post processing step to other parameterizers that do not necessarily return a valid embedding. It is based on the convexification of the initial (2D) parameterization and the resolution of a linear system with coefficients based on Mean Value Coordinates.

Is Model Of:
Parameterizer_3
Template Parameters
TriangleMesh_must be a model of FaceGraph.
SolverTraits_must be a model of SparseLinearAlgebraTraits_d.
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:
Eigen::BiCGSTAB<Eigen_sparse_matrix<double>::EigenType,
Eigen::IncompleteLUT< double > > >
See also
CGAL::Surface_mesh_parameterization::ARAP_parameterizer_3<TriangleMesh, BorderParameterizer_, Solver_traits>

Public Types

typedef SolverTraits_ Solver_traits
 
typedef TriangleMesh_ TriangleMesh
 

Public Member Functions

template<typename VertexUVMap , typename VertexIndexMap >
Error_code parameterize (const TriangleMesh &mesh, const Vertex_set &vertices, const Faces_vector &faces, halfedge_descriptor bhd, VertexUVMap uvmap, const VertexIndexMap vimap)
 
template<typename VertexUVMap , typename VertexIndexMap >
Error_code parameterize (const TriangleMesh &mesh, halfedge_descriptor bhd, VertexUVMap uvmap, const VertexIndexMap vimap)
 Compute a one-to-one mapping from a triangular 2D surface mesh that is not necessarily embedded to a piece of the 2D space. More...
 
 MVC_post_processor_3 (Solver_traits sparse_la=Solver_traits())
 Constructor. More...
 

Constructor & Destructor Documentation

◆ MVC_post_processor_3()

template<class TriangleMesh_ , class SolverTraits_ = Default>
CGAL::Surface_mesh_parameterization::MVC_post_processor_3< TriangleMesh_, SolverTraits_ >::MVC_post_processor_3 ( Solver_traits  sparse_la = Solver_traits())

Constructor.

Parameters
sparse_laTraits object to access a sparse linear system.

Member Function Documentation

◆ parameterize()

template<class TriangleMesh_ , class SolverTraits_ = Default>
template<typename VertexUVMap , typename VertexIndexMap >
Error_code CGAL::Surface_mesh_parameterization::MVC_post_processor_3< TriangleMesh_, SolverTraits_ >::parameterize ( const TriangleMesh &  mesh,
halfedge_descriptor  bhd,
VertexUVMap  uvmap,
const VertexIndexMap  vimap 
)

Compute a one-to-one mapping from a triangular 2D surface mesh that is not necessarily embedded to a piece of the 2D space.

Template Parameters
VertexUVmapmust be a model of ReadWritePropertyMap with boost::graph_traits<TriangleMesh>::vertex_descriptor as key type and Point_2 (type deduced from TriangleMesh using Kernel_traits) as value type.
VertexIndexMapmust be a model of ReadablePropertyMap with boost::graph_traits<TriangleMesh>::vertex_descriptor as key type and a unique integer as value type.
Parameters
mesha triangulated surface.
bhda halfedge descriptor on the boundary of mesh.
uvmapan instanciation of the class VertexUVmap.
vimapan instanciation of the class VertexIndexMap.