diff --git a/Documentation/doc/biblio/cgal_manual.bib b/Documentation/doc/biblio/cgal_manual.bib index 6dcd0e958c7..dd8d522bda4 100644 --- a/Documentation/doc/biblio/cgal_manual.bib +++ b/Documentation/doc/biblio/cgal_manual.bib @@ -1153,6 +1153,12 @@ Teillaud" URL = {https://hal.inria.fr/hal-01568002}, } +@inproceedings{cgal:j-lrsspp-19, + title={Learning to Reconstruct Symmetric Shapes using Planar Parameterization of 3D Surface}, + author={Jain, Hardik and Wollhaf, Manuel and Hellwich, Olaf}, + booktitle={Proceedings of the IEEE International Conference on Computer Vision Workshops}, + year={2019} +} @book{ cgal:j-csl-99 ,author = "Nicolai M. Josuttis" @@ -1964,6 +1970,14 @@ ABSTRACT = {We present the first complete, exact and efficient C++ implementatio update = "09.11 penarand" } +@inproceedings{cgal:ssgh-tmpm-01, + title={Texture mapping progressive meshes}, + author={Sander, Pedro V and Snyder, John and Gortler, Steven J and Hoppe, Hugues}, + booktitle={Proceedings of the 28th annual conference on Computer graphics and interactive techniques}, + pages={409--416}, + year={2001} +} + @inproceedings{ cgal:s-cgehd-98 ,author = "Jonathan R. Shewchuk" ,title = "A Condition Guaranteeing the Existence of Higher-Dimensional diff --git a/Surface_mesh_parameterization/include/CGAL/Surface_mesh_parameterization/Discrete_authalic_parameterizer_3.h b/Surface_mesh_parameterization/include/CGAL/Surface_mesh_parameterization/Discrete_authalic_parameterizer_3.h index c99c3d92d99..7a772ba3319 100644 --- a/Surface_mesh_parameterization/include/CGAL/Surface_mesh_parameterization/Discrete_authalic_parameterizer_3.h +++ b/Surface_mesh_parameterization/include/CGAL/Surface_mesh_parameterization/Discrete_authalic_parameterizer_3.h @@ -75,6 +75,8 @@ namespace Surface_mesh_parameterization { /// \endcode /// /// \sa `CGAL::Surface_mesh_parameterization::Fixed_border_parameterizer_3` +/// \sa `CGAL::Surface_mesh_parameterization::Iterative_authalic_parameterizer_3` +/// \sa `CGAL::Surface_mesh_parameterization::ARAP_parameterizer_3` /// template < class TriangleMesh_, class BorderParameterizer_ = Default, diff --git a/Surface_mesh_parameterization/include/CGAL/Surface_mesh_parameterization/Iterative_authalic_parameterizer_3.h b/Surface_mesh_parameterization/include/CGAL/Surface_mesh_parameterization/Iterative_authalic_parameterizer_3.h index 35780bc92e3..0e253a72a6d 100755 --- a/Surface_mesh_parameterization/include/CGAL/Surface_mesh_parameterization/Iterative_authalic_parameterizer_3.h +++ b/Surface_mesh_parameterization/include/CGAL/Surface_mesh_parameterization/Iterative_authalic_parameterizer_3.h @@ -16,7 +16,7 @@ #include #include #include -#include +#include #include #include @@ -24,8 +24,6 @@ #include #include #include -#include //for 2D functions -#include //for 3D functions #if defined(CGAL_EIGEN3_ENABLED) #include @@ -48,32 +46,25 @@ namespace Surface_mesh_parameterization { /// \ingroup PkgSurfaceMeshParameterizationMethods /// -/// The class `Iterative_authalic_parameterizer_3` -/// implements the *Iterative Parameterization* algorithm. +/// The class `Iterative_authalic_parameterizer_3` implements the *Iterative Parameterization* algorithm, +/// as described by Jain et al. \cgalCite{cgal:j-lrsspp-19}. /// -/// A one-to-one mapping is guaranteed if the surface's border is mapped onto a convex polygon. -/// -/// @fixme wrong description -/// This class is a strategy called by the main parameterization algorithm -/// `Fixed_border_iterative_parameterizer_3::parameterize()` and it: -/// - provides the template parameters `BorderParameterizer_` and `SolverTraits_`. -/// - implements `compute_w_ij()` to compute w_ij = (i, j), coefficient of the matrix A -/// for j neighbor vertex of i, based on Iterative Parameterization algorithm. -/// -/// \cgalModels `Parameterizer_3` +/// This parameterization is a fixed border parameterization and is part of the authalic +/// parameterization family, meaning that it aims to minimize area distortion +/// between the input surface mesh and the parameterized output. +/// More precisely, the approach used by this parameterizer is to iteratively redistribute +/// the \f$ L_2\f$ stretch over the mesh, as defined by Sander et al. \cgalCite{cgal:ssgh-tmpm-01}. /// /// \tparam TriangleMesh_ must be a model of `FaceGraph`. -/// /// \tparam BorderParameterizer_ is a Strategy to parameterize the surface border /// and must be a model of `Parameterizer_3`.
/// %Default: /// \code -/// Square_border_arc_length_parameterizer_3 +/// Circular_border_arc_length_parameterizer_3 /// \endcode /// /// \tparam SolverTraits_ must be a model of `SparseLinearAlgebraTraits_d`.
-/// Note that the system is *not* symmetric because `Fixed_border_iterative_parameterizer_3` -/// does not remove border vertices from the system.
+/// Note that the system is *not* symmetric because border vertices are not removed from the system.
/// %Default: If \ref thirdpartyEigen "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: @@ -83,7 +74,8 @@ namespace Surface_mesh_parameterization { /// Eigen::IncompleteLUT< double > > > /// \endcode /// -/// \sa `CGAL::Surface_mesh_parameterization::Fixed_border_iterative_parameterizer_3` +/// \sa `CGAL::Surface_mesh_parameterization::Discrete_authalic_parameterizer_3` +/// \sa `CGAL::Surface_mesh_parameterization::ARAP_parameterizer_3` /// template >::type Border_parameterizer; + Circular_border_arc_length_parameterizer_3 >::type Border_parameterizer; typedef typename Default::Get #include #include +#include #include #include #include #include #include +#include #include #include