diff --git a/Surface_mesh_parameterization/doc/Surface_mesh_parameterization/Doxyfile.in b/Surface_mesh_parameterization/doc/Surface_mesh_parameterization/Doxyfile.in
index 2fb802adac7..354afa8e8c8 100644
--- a/Surface_mesh_parameterization/doc/Surface_mesh_parameterization/Doxyfile.in
+++ b/Surface_mesh_parameterization/doc/Surface_mesh_parameterization/Doxyfile.in
@@ -5,7 +5,11 @@ EXTRACT_ALL = false
HIDE_UNDOC_CLASSES = true
WARN_IF_UNDOCUMENTED = false
HTML_EXTRA_FILES = ${CGAL_PACKAGE_DOC_DIR}/fig/nefertiti.png \
- ${CGAL_PACKAGE_DOC_DIR}/fig/ARAP.png \
- ${CGAL_PACKAGE_DOC_DIR}/fig/orbifold.png
-
-
+ ${CGAL_PACKAGE_DOC_DIR}/fig/ARAP_new.jpg \
+ ${CGAL_PACKAGE_DOC_DIR}/fig/orbifold_new.jpg \
+ ${CGAL_PACKAGE_DOC_DIR}/fig/uniform_new.jpg \
+ ${CGAL_PACKAGE_DOC_DIR}/fig/LSCM_new.jpg \
+ ${CGAL_PACKAGE_DOC_DIR}/fig/conformal_new.jpg \
+ ${CGAL_PACKAGE_DOC_DIR}/fig/authalic_new.jpg \
+ ${CGAL_PACKAGE_DOC_DIR}/fig/floater_new.jpg \
+ ${CGAL_PACKAGE_DOC_DIR}/fig/hand_base.jpg \
diff --git a/Surface_mesh_parameterization/doc/Surface_mesh_parameterization/Surface_mesh_parameterization.txt b/Surface_mesh_parameterization/doc/Surface_mesh_parameterization/Surface_mesh_parameterization.txt
index deeecf26788..c37f5f10a11 100644
--- a/Surface_mesh_parameterization/doc/Surface_mesh_parameterization/Surface_mesh_parameterization.txt
+++ b/Surface_mesh_parameterization/doc/Surface_mesh_parameterization/Surface_mesh_parameterization.txt
@@ -7,7 +7,8 @@ namespace CGAL {
\anchor chapsurface_mesh_parameterization
\cgalAutoToc
-\authors Laurent Saboret, Pierre Alliez, Bruno Lévy, and Andreas Fabri
+\authors Laurent Saboret, Pierre Alliez, Bruno Lévy, Andreas Fabri, and
+Mael Rouxel-Labbé
\section Surface_mesh_parameterizationIntroduction Introduction
@@ -40,7 +41,7 @@ planar domain (convex polygon vs. free border) and by the bijectivity guarantees
of the mapping.
The package proposes an interface for any model of the concept `FaceGraph`,
-such as the classes `Surface_mesh`, `Polyhedron_3`, `Seam_mesh` or the mesh
+such as the classes `Surface_mesh`, `Polyhedron_3`, `Seam_mesh`, or the mesh
classes of OpenMesh.
Since parameterizing meshes requires an efficient representation of sparse
@@ -52,7 +53,9 @@ Note that linear solvers commonly use double precision floating point
numbers. Therefore, this package is intended to be used with a \cgal %Cartesian kernel with doubles.
\cgalFigureBegin{Surface_mesh_parameterizationfigintroduction,introduction.jpg}
-Texture mapping via Least Squares Conformal Maps parameterization. Top: original mesh and texture. Bottom: parameterized mesh (left: parameter space, right: textured mesh).
+Texture mapping via Least Squares Conformal Maps parameterization.
+Top: original mesh and texture. Bottom: parameterized mesh (left: parameter space,
+right: textured mesh).
\cgalFigureEnd
\section Surface_mesh_parameterizationBasics Basics
@@ -96,7 +99,7 @@ of this program.
\cgalFigureAnchor{Surface_mesh_parameterizationfigsimple}
-
+
\cgalFigureCaptionBegin{Surface_mesh_parameterizationfigsimple}
Input (left), parameter space (middle), and textured mesh (right) corresponding to the
@@ -176,6 +179,22 @@ The different parameterization methods can be classified into three categories
depending on the type of border parameterization that is required: fixed border,
free border, and borderless.
+Illustrations of the different methods are obtained with the same input model,
+the hand model, shown in Figure \cgalFigureRef{Surface_mesh_parameterizationfigbase}.
+The hand is a topological sphere, and a `Seam_mesh` is used to cut it into
+a topological disk. In Figure \cgalFigureRef{Surface_mesh_parameterizationfigbase},
+the seam is traced in red and the four cones used for Orbifold Tutte
+Parameterization (Section \ref Surface_mesh_parameterizationOrbi) are marked with green dots.
+
+\cgalFigureAnchor{Surface_mesh_parameterizationfigbase}
+
+
+
+\cgalFigureCaptionBegin{Surface_mesh_parameterizationfigbase}
+The base mesh used in the illustrations of the different methods throughout this
+Section. The seam is traced in red. Vertices marked with green dots are cones.
+\cgalFigureCaptionEnd
+
\subsection Surface_mesh_parameterizationFixedBorder Fixed Border Surface Parameterizations
Fixed border surface parameterizations are characterized by having a constrained border
@@ -200,9 +219,13 @@ vertex \f$ v_i\f$ for a diagonal element, and to 0 for any other matrix
entry. Although a bijective mapping is guaranteed when the border is convex,
this method does not minimize either angle nor area distortion.
-\cgalFigureBegin{Surface_mesh_parameterizationfiguniform,uniform.png}
-Left: Tutte Barycentric mapping parameterization (the red line depicts the cut graph). Right: parameter space.
-\cgalFigureEnd
+\cgalFigureAnchor{Surface_mesh_parameterizationfiguniform}
+
+
+
+\cgalFigureCaptionBegin{Surface_mesh_parameterizationfiguniform}
+Tutte Barycentric mapping parameterization (the blue line depicts the cut graph). Rightmost: parameter space.
+\cgalFigureCaptionEnd
\subsubsection Surface_mesh_parameterizationDiscreteAuthalic Discrete Authalic Parameterization
@@ -217,9 +240,13 @@ the border is convex. This method solves two
\#vertices x \#vertices sparse linear systems. The matrix (the same
for both systems) is asymmetric.
-\cgalFigureBegin{Surface_mesh_parameterizationfigauthalic,authalic.png}
-Discrete Authalic Parameterization. Right: parameter space.
-\cgalFigureEnd
+\cgalFigureAnchor{Surface_mesh_parameterizationfigauthalic}
+
+
+
+\cgalFigureCaptionBegin{Surface_mesh_parameterizationfigauthalic}
+Discrete Authalic Parameterization (the blue line depicts the cut graph). Rightmost: parameter space.
+\cgalFigureCaptionEnd
\subsubsection Surface_mesh_parameterizationDiscreteConformal Discrete Conformal Map
@@ -239,9 +266,13 @@ definite (if the border vertices are eliminated from the linear system
and if the mesh contains no hole), and thus can be efficiently solved using
dedicated linear solvers.
-\cgalFigureBegin{Surface_mesh_parameterizationfigconformal,conformal.png}
-Left: Discrete Conformal Map. Right: parameter space.
-\cgalFigureEnd
+\cgalFigureAnchor{Surface_mesh_parameterizationfigconformal}
+
+
+
+\cgalFigureCaptionBegin{Surface_mesh_parameterizationfigconformal}
+Discrete Conformal Map. Rightmost: parameter space.
+\cgalFigureCaptionEnd
\subsubsection Surface_mesh_parameterizationFloaterMean Floater Mean Value Coordinates
@@ -255,9 +286,13 @@ with a guaranteed one-to-one mapping when the border is convex. This method
solves two \#vertices x \#vertices sparse linear systems. The matrix (the same
for both systems) is asymmetric.
-\cgalFigureBegin{Surface_mesh_parameterizationfigfloater,floater.png}
-Floater Mean Value Coordinates. Right: parameter space.
-\cgalFigureEnd
+\cgalFigureAnchor{Surface_mesh_parameterizationfigfloater}
+
+
+
+\cgalFigureCaptionBegin{Surface_mesh_parameterizationfigfloater}
+Floater Mean Value Coordinates. Rightmost: parameter space.
+\cgalFigureCaptionEnd
\subsubsection secBorderParameterizationsforFixedMethods Border Parameterizations for Fixed Methods
@@ -320,9 +355,13 @@ is not guaranteed by this method. It solves a (2 \f$ \times\f$
\#triangles) \f$ \times\f$ \#vertices sparse linear system in the least squares sense,
which implies solving a symmetric matrix.
-\cgalFigureBegin{Surface_mesh_parameterizationfigLSCM,LSCM.png}
-Least Squares Conformal Maps. Right: parameter space.
-\cgalFigureEnd
+\cgalFigureAnchor{Surface_mesh_parameterizationfigLSCM}
+
+
+
+\cgalFigureCaptionBegin{Surface_mesh_parameterizationfigLSCM}
+Least Squares Conformal Maps. Rightmost: parameter space.
+\cgalFigureCaptionEnd
\subsubsection Surface_mesh_parameterizationARAP As Rigid As Possible Parameterization
@@ -337,16 +376,16 @@ to guarantee that the parameterized mesh is a triangulation.
A generalization of the formulation of the local optimization introduces a scalar
coefficient λ that allows the user to balance angle and shape distortion:
the closer λ is to 0, the more importance is given to the minimization
-of angle distortion (conforming parameterization); inversely, when λ grows,
+of angle distortion; inversely, when λ grows,
the parameterizer gives more and more importance to the minimization of shape
-distortion (as rigid as possible).
+distortion.
\cgalFigureAnchor{Surface_mesh_parameterizationfigARAP}
-
+
\cgalFigureCaptionBegin{Surface_mesh_parameterizationfigARAP}
-As Rigid As Possible parameterization (the cut is traced in red). Right: parameter space.
+As Rigid As Possible parameterization (the blue line depicts the cut graph). Rightmost: parameter space.
\cgalFigureCaptionEnd
\subsubsection secBorderParameterizationsforFreeMethods Border Parameterizations for Free Methods
@@ -381,25 +420,26 @@ and is a generalization of Tutte’s embedding to other topologies, and in parti
spheres, which we consider here. The orbifold-Tutte embedding bijectively maps
the original surface, that is required to be a topological ball, to a canonical,
topologically equivalent, two-dimensional flat surface called an Euclidean orbifold.
-There are 17 Euclidean orbifolds, of which only the 4 sphere orbifolds are implemented for now.
+There are 17 Euclidean orbifolds, of which only the 4 sphere orbifolds are currently implemented
+in CGAL.
The orbifold-Tutte embedding yields a seamless, globally bijective parameterization that,
similarly to the classic Tutte embedding, only requires solving a sparse linear system
for its computation.
-The algorithm requires the user to additionally select a set of vertices of the
-input mesh and mark them as cones, that is singularities of the unfolding.
-Internally, the process requires the uses of seams between the cones, but the choice
+The algorithm requires the user to select a set of vertices of the
+input mesh and mark them as cones, which will be the singularities of the unfolding.
+Internally, the process requires the use of (virtual) seams between the cones, but the choice
of these seams do not influence the result. The `Seam_mesh` structure
(see also Section \ref secCuttingaMesh) is used for this purpose.
\cgalFigureAnchor{Surface_mesh_parameterizationfigOrbifold}
-
+
\cgalFigureCaptionBegin{Surface_mesh_parameterizationfigOrbifold}
Type IV Orbifold Tutte Embedding. The (four) base cones are shown in green and the
-virtual cut is shown in red. Right: parameter space.
+virtual cut is traced in blue. Rightmost: parameter space.
\cgalFigureCaptionEnd
\section secCuttingaMesh Cutting a Mesh
@@ -422,7 +462,7 @@ halfedge property using a `Unique_hash_map`.
Note that vertices on a seam are duplicated in a `Seam_mesh` structure
and thus the UV-coordinates are here associated to the halfedges of the
-seam mesh.
+underlying (input) mesh.
\cgalExample{Surface_mesh_parameterization/seam_Polyhedron_3.cpp}
@@ -486,11 +526,11 @@ The main author of the first version of this package was Laurent Saboret,
who worked as an engineer at Inria Sophia-Antipolis.
For CGAL 4.11 the package has undergone a major rewrite by Andreas Fabri and
-Mael Rouxel-Labbé and the Orbifold Tutte Embedding and As-Rigid-As-Possible
-parameterization techniques were added. All algorithms are now based on
-the`FaceGraph` API. Additionally, the class `Seam_mesh` was introduced to handle
-virtual borders. It is also a model of a `FaceGraph`, and replaces a wrapper
-which had a more complicated API.
+Mael Rouxel-Labbé. The Orbifold Tutte Embedding and As-Rigid-As-Possible
+parameterization techniques were added and all algorithms are now based on
+the `FaceGraph` API. Additionally, the class `Seam_mesh` was introduced to handle
+virtual borders. The class `Seam_mesh` is also a model of a `FaceGraph`,
+and replaces a wrapper which had a more complicated API.
*/
} /* namespace CGAL */
diff --git a/Surface_mesh_parameterization/doc/Surface_mesh_parameterization/fig/ARAP_new.jpg b/Surface_mesh_parameterization/doc/Surface_mesh_parameterization/fig/ARAP_new.jpg
new file mode 100644
index 00000000000..ca7a4142893
Binary files /dev/null and b/Surface_mesh_parameterization/doc/Surface_mesh_parameterization/fig/ARAP_new.jpg differ
diff --git a/Surface_mesh_parameterization/doc/Surface_mesh_parameterization/fig/LSCM_new.jpg b/Surface_mesh_parameterization/doc/Surface_mesh_parameterization/fig/LSCM_new.jpg
new file mode 100644
index 00000000000..3d29edcc065
Binary files /dev/null and b/Surface_mesh_parameterization/doc/Surface_mesh_parameterization/fig/LSCM_new.jpg differ
diff --git a/Surface_mesh_parameterization/doc/Surface_mesh_parameterization/fig/authalic_new.jpg b/Surface_mesh_parameterization/doc/Surface_mesh_parameterization/fig/authalic_new.jpg
new file mode 100644
index 00000000000..2018c9d91a8
Binary files /dev/null and b/Surface_mesh_parameterization/doc/Surface_mesh_parameterization/fig/authalic_new.jpg differ
diff --git a/Surface_mesh_parameterization/doc/Surface_mesh_parameterization/fig/conformal_new.jpg b/Surface_mesh_parameterization/doc/Surface_mesh_parameterization/fig/conformal_new.jpg
new file mode 100644
index 00000000000..37024927a9c
Binary files /dev/null and b/Surface_mesh_parameterization/doc/Surface_mesh_parameterization/fig/conformal_new.jpg differ
diff --git a/Surface_mesh_parameterization/doc/Surface_mesh_parameterization/fig/floater_new.jpg b/Surface_mesh_parameterization/doc/Surface_mesh_parameterization/fig/floater_new.jpg
new file mode 100644
index 00000000000..40484263e04
Binary files /dev/null and b/Surface_mesh_parameterization/doc/Surface_mesh_parameterization/fig/floater_new.jpg differ
diff --git a/Surface_mesh_parameterization/doc/Surface_mesh_parameterization/fig/hand_base.jpg b/Surface_mesh_parameterization/doc/Surface_mesh_parameterization/fig/hand_base.jpg
new file mode 100644
index 00000000000..c1657de4c2e
Binary files /dev/null and b/Surface_mesh_parameterization/doc/Surface_mesh_parameterization/fig/hand_base.jpg differ
diff --git a/Surface_mesh_parameterization/doc/Surface_mesh_parameterization/fig/orbifold_new.jpg b/Surface_mesh_parameterization/doc/Surface_mesh_parameterization/fig/orbifold_new.jpg
new file mode 100644
index 00000000000..8d398c893ec
Binary files /dev/null and b/Surface_mesh_parameterization/doc/Surface_mesh_parameterization/fig/orbifold_new.jpg differ
diff --git a/Surface_mesh_parameterization/doc/Surface_mesh_parameterization/fig/uniform_new.jpg b/Surface_mesh_parameterization/doc/Surface_mesh_parameterization/fig/uniform_new.jpg
new file mode 100644
index 00000000000..6dcb657e2fa
Binary files /dev/null and b/Surface_mesh_parameterization/doc/Surface_mesh_parameterization/fig/uniform_new.jpg differ