diff --git a/Packages/Subdivision_surfaces_3/doc_tex/Subdivision_surfaces_3/main.tex b/Packages/Subdivision_surfaces_3/doc_tex/Subdivision_surfaces_3/main.tex
index 97cd4e3fa33..0ecec3cd653 100644
--- a/Packages/Subdivision_surfaces_3/doc_tex/Subdivision_surfaces_3/main.tex
+++ b/Packages/Subdivision_surfaces_3/doc_tex/Subdivision_surfaces_3/main.tex
@@ -22,7 +22,7 @@
\ccParDims
-\chapter{Subdivision Surfaces}
+\chapter{Subdivision Methods}
\label{chapterSubdivision}
\ccChapterRelease{\subdivisionRev. \ \subdivisionDate}
\ccChapterAuthor{Le-Jeng Andy Shiue}
@@ -41,15 +41,15 @@
% +------------------------------------------------------------------------+
\section{Introduction} \label{sectionSubIntro}
% +------------------------------------------------------------------------+
-The subdivision algorithm is a simple yet powerful way to
+The subdivision method is a simple yet powerful way to
generate smooth surfaces from arbitrary polyhedral meshes.
Unlike spline-based surfaces (e.g NURBS) or other numeric-based
modeling techniques, users of subdivision
surfaces do not need in-depth mathematics
-knowledge on subdivision algorithms. An artist only need
+knowledge on subdivision methods. Users only need
natural geometric intuitions to control the subdivision
-surfaces. It is hence especially popular for character
-modeling in video games and character animations.
+surface; hence subdivision methods are popular choices for
+character modeling in video games and character animations.
%Subdivision algorithms (see e.g.~\cite{cgal:ww-smgd-02})
%recursively refine coarse meshes and generate ever closer
@@ -64,13 +64,14 @@ modeling in video games and character animations.
%Each subdivision algorithm is a refinement function parametrized
%by a set of rountines of geometric averageing.
-While many subdivision schemes have been developed and new schemes
-are still being researched, \ccc{Subdivision_surfaces_3}
-supports the families of the four most used schemes:
-Loop, Catmull-Clark, Doo-Sabin and $\sqrt{3}$ subdivisions.
-\ccc{Subdivision_surfaces_3}, working on the concept of
-the \ccc{CGAL::Polyhedron_3} (see Chapter~\ref{chapterPolyhedron}),
-aims to be simple to use and powerful to extend.
+\ccc{Subdivision_surfaces_3} aims to be simple to use and extend.
+It supports four most used subdivision methods, including Loop,
+Catmull-Clark, Doo-Sabin and $\sqrt{3}$ subdivisions. Variations
+of these methods can be easily implemented by plugging
+in the user-defined computation rules. \ccc{Subdivision_surfaces_3}
+is designed to work on \ccc{CGAL::Polyhedron_3}
+(see Chapter~\ref{chapterPolyhedron}),
+
\begin{ccHtmlOnly}
@@ -83,30 +84,44 @@ aims to be simple to use and powerful to extend.
\label{secSubAlgo}
% +------------------------------------------------------------------------+
In this chapter, we explain some fundamentals of
-subdivision surfaces. We only focus on the topics helping you
+subdivision methods. We only focus on the topics helping you
to understand the design of the package; interested readers can
still refer to \cite{cgal:ww-smgd-02} for an in-depth introduction.
Some terminologies introduced in this section will be used again
-in later sections. For users just want to use Loop (or
-Catmull-Clark ...etc) subdivision, Section \ref{secFirstSub}
-gives a quick tutorial on using these subdivisions.
+in later sections. If you are only interested in using a
+specific subdivision method, Section \ref{secFirstSub}
+gives a quick tutorial on Catmull-Clark subdivision.
-Subdivision algorithms recursively refine coarse meshes and generate
-ever closer approximations to a smooth surface.
+A subdivision method recursively refines a coarse mesh and
+generates an ever closer approximation to a smooth surface.
+The coarse mesh can have arbitrary shapes, but it has to
+be a 2-manifold. In a 2-manifold, every interior point has
+a neighborhood homomorphic to a 2D disk. Subdivision methods
+on non-manifolds have be developed, but are not considered
+in this work.
%Subdivision algorithms (see e.g.~\cite{cgal:ww-smgd-02})
%define surfaces as the limit
%of recursive refinement of a polyhedral mesh, called
%\emph{control mesh}.
%The refinements generate mesh points
%to be smoothed to approximate the limit surface.
-The chapter teaser shows a sequence of a subdivision on
-a chess model.
+The chapter teaser shows the process of a subdivision method on
+a chess model. The coarse chess is repeatly refined by a pattern,
+and more and more points are generated to approximate the
+smooth chess.
Many refinement patterns are used in practice.
\ccc{Subdivision_surfaces_3} supports the four most popular
-patterns, and each of them is used by Loop,
-Catmull-Clark\cite{cgal:cc-rgbss-78}, Doo-Sabin
-and $\sqrt{3}$ subdivision.
+patterns, and each of them is used by
+Catmull-Clark\cite{cgal:cc-rgbss-78}, Loop, Doo-Sabin
+and $\sqrt{3}$ subdivision (left to right in the
+figure). Note we name these patterns by their topological
+characteristics, not the associated subdivision methods.
+PQQ indicates the \emph{P}rimal \emph{Q}uadtrateral \emph{Q}uadrisection.
+PTQ indicates the \emph{P}rimal \emph{T}riangle \emph{Q}uadrisection.
+DQQ indicates the \emph{D}ual \emph{Q}uadtrateral \emph{Q}uadrisection.
+$\sqrt{3}$ has a long story of its naming; simply put, it
+indicates the speed of the topological converging.
\begin{ccTexOnly}
\begin{center}
@@ -122,12 +137,14 @@ and $\sqrt{3}$ subdivision.
\end{ccHtmlOnly}
-Four refinement patterns are demonstrated on a valence-n mesh.
-The refined mesh is shown below the input
-mesh (called \emph{control mesh}).
+The figure demonstrates these four refinement patterns on
+the 1-disk of a valence-5 vertex/facet.
+Refined meshes are shown below the source meshes.
+%We call a source mesh \emph{control mesh} if it is
+%the origin of a squence of refinements.
Points on the refined mesh are generated by averaging
-neighbor points on the input mesh. A graph, called \emph{stencil},
-determines the input submesh whose points contribute to the
+neighbor points on the source mesh. A graph, called \emph{stencil},
+determines the source neighthood whose points contribute to the
position of a refined point. A refinement pattern usually has
several specific sets of stencils.
%Stencils are defined at the time the refinement pattern is chosen.
@@ -137,7 +154,10 @@ For example, the PQQ
refinement used by Catmull-Clark subdivision has a vertex-node stencil,
which defines the 1-ring of an input vertex; an edge-node stencil,
which defines the 1-ring of an input edge; and a facet-node stencil,
-which defines an input facet.
+which defines an input facet. The stecils of the PQQ refinement are
+shown in the following figure. The blue neighborhoods in the
+top row indicate the corresponding stencils of the refined nodes
+in red.
\begin{ccTexOnly}
\begin{center}
@@ -154,14 +174,16 @@ which defines an input facet.
\end{ccHtmlOnly}
-The blue neighborhoods in the top row indicate the corresponding
-stencils of the refined nodes in red.
-
%while the DQQ scheme has only a corner-node stencil, which
%relates the facet of a corner to a target node.
Stencils with weights are called \emph{geometry masks}.
%One practical set of geometry masks of the PQQ scheme is
-The geometric masks of Catmull-Clark subdivision are shown below.
+A subdivision method defines the masks for the stencils, and
+generates new points by summarizing source points weighted by the mask.
+Geometry masks are usually carefully choosed to meet requirements of
+certain surface smoothness and shape quality.
+The geometry masks of Catmull-Clark subdivision are shown
+below (masks for extraordinary vertices are not shown).
\begin{ccTexOnly}
\begin{center}
@@ -178,19 +200,17 @@ The geometric masks of Catmull-Clark subdivision are shown below.
\end{ccHtmlOnly}
The weights shown here are unnormalized, and $n$ is the valence
-of the vertex. The subdivided point, in red, is computed by a summation
-of the weighted points on its stencil (i.e.~an input submesh).
-For example, a Catmull-Clark facet-node is computed by the summation
-of $1/4$ of each stencil node.
+of the vertex. The generated point, in red, is computed by a summation
+of the weighted points. For example, a Catmull-Clark facet-node is
+computed by the summation of $1/4$ of each points on its stencil.
A stencil may have several specific sets of geometry masks. In other
words, a facet-node of Catmull-Clark refinement may be computed by
the summation of $1/5$ of each stencil node instead of $1/4$.
Although it is legal in \ccc{Subdivision_surfaces_3} to have
any kind of geometry mask, the result surfaces may be odd,
-not smooth, or not even exist.
-To learn how to design a good mask, both mathematically and esthetically,
-readers can refer to \cite{cgal:ww-smgd-02}.
+not smooth, or not even exist. \cite{cgal:ww-smgd-02} explains the
+details on designing masks of quality subdivision surfaces.
%The averaging process can typically be factored into
%simpler steps \cite{Oswald-2003-CSS}.
@@ -224,15 +244,14 @@ readers can refer to \cite{cgal:ww-smgd-02}.
% +-------------------------------------------------------------+
\section{Your First CGAL::Subdivision}
\label{secFirstSub}
-Assuming that you already have a \emph{normal} CGAL polyhedral mesh,
-say the default one, you can use the \ccc{Subdivision_surfaces_3}
-without much effort.
+With a default CGAL polyhedral mesh, you can
+use the \ccc{Subdivision_surfaces_3} without much effort.
\ccIncludeExampleCode{Subdivision_surfaces_3/CatmullClark_subdivision.C}
This example demonstrates the use of Catmull-Clark subdivision
-on a read-in CGAL polyhedral mesh. There is only one line worth some
-time to explain:
+on a read-in CGAL polyhedral mesh. There is only one line deserving
+explanation:
\begin{ccExampleCode}
Subdivision_surfaces_3::CatmullClark_subdivision(P,d);
\end{ccExampleCode}
@@ -253,8 +272,8 @@ This example shows how to apply the subdivision algorithm
on a simple \ccc{CGAL::Polyhedron_3}. When specializing the polyhedron,
there are two more things required to be kept in mind.
First, the internal storage of your
-polyhedron has to be sequential ordered, such as the vector
-or the linked-list. A sequential ordered container always inserts new
+polyhedron has to be sequentially ordered, such as the vector
+or the linked-list. A sequentially ordered container always inserts new
entries at the end. Secondly, typename \ccc{Point_3} is
required to be defined within your polyhedron, otherwise our
subdivisions will not know how to compute and where to store the