CGAL 4.8.1 - Planar Parameterization of Triangulated Surface Meshes
|
#include <CGAL/Barycentric_mapping_parameterizer_3.h>
The class Barycentric_mapping_parameterizer_3 implements Tutte Barycentric Mapping algorithm
[9]. This algorithm is also called Tutte Uniform Weights by other authors.
One-to-one mapping is guaranteed if the surface's border is mapped to a convex polygon.
This class is used by the main parameterization algorithm Fixed_border_parameterizer_3::parameterize().
w_ij = (i,j)
coefficient of matrix A for j
neighbor vertex of i
based on Tutte Barycentric Mapping method.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. |
CGAL::Parameterizer_traits_3<ParameterizationMesh_3>
CGAL::Fixed_border_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::LSCM_parameterizer_3<ParameterizationMesh_3, BorderParameterizer_3>
CGAL::Mean_value_coordinates_parameterizer_3<ParameterizationMesh_3, BorderParameterizer_3, SparseLinearAlgebraTraits_d>
Public Member Functions | |
Barycentric_mapping_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 &, Vertex_const_handle, Vertex_around_vertex_const_circulator) |
Compute w_ij = (i,j) coefficient of matrix A for j neighbor vertex of i. More... | |
virtual bool | is_one_to_one_mapping (const Adaptor &, const Matrix &, const Vector &, const Vector &) |
Check if 3D -> 2D mapping is one-to-one. More... | |
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... | |
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). | |
CGAL::Barycentric_mapping_parameterizer_3< ParameterizationMesh_3, BorderParameterizer_3, SparseLinearAlgebraTraits_d >::Barycentric_mapping_parameterizer_3 | ( | Border_param | border_param = Border_param() , |
Sparse_LA | sparse_la = Sparse_LA() |
||
) |
Constructor.
border_param | object that maps the surface's border to 2D space. |
sparse_la | Traits object to access a sparse linear system. |
|
protectedvirtual |
Compute w_ij = (i,j) coefficient of matrix A for j neighbor vertex of i.
Tutte Barycentric Mapping algorithm is the most simple one: w_ij = 1 for j neighbor vertex of i.
|
protectedvirtual |
Check if 3D -> 2D mapping is one-to-one.
Theorem: one-to-one mapping is guaranteed if all w_ij coefficients are > 0 (for j vertex neighbor of i) and if the surface border is mapped onto a 2D convex polygon. All w_ij coefficients = 1 (for j vertex neighbor of i), thus mapping is guaranteed if the surface border is mapped onto a 2D convex polygon.
Reimplemented from CGAL::Fixed_border_parameterizer_3< ParameterizationMesh_3, BorderParameterizer_3, SparseLinearAlgebraTraits_d >.