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 187bb4e2dc2..d9218d5ad51 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 @@ -242,7 +242,7 @@ details on designing masks of quality subdivision surfaces. %averaging rules of the geometry stencils. % +-------------------------------------------------------------+ -\section{Your First CGAL::Subdivision} +\section{Create Your First Subdivision Surafce} \label{secFirstSub} Assuming your familiarity of \ccc{CGAL::Polyhedron_3}, you can intergrate \ccc{Subdivision_surfaces_3} into your program @@ -293,73 +293,104 @@ two restrictions. % +-------------------------------------------------------------+ \section{Catmull-Clark Subdivision in Depth} \label{secCC} -In some situations, Loop, Catmull-Clark, Doo-Sabin and $\sqrt{3}$ -subdivisions are just not the surfaces you would like to have. You -may be a graduate student believing in a perfect subdivision scheme, or -you just want a unique surface which looks simply bad. In either case, -\ccc{Subdivision_surfaces_3} allows you to try your beloved algorithms -with a small amount of efforts. The best way to learn how to create -a your-name subdivision is by digging into one of the four subdivisions -\ccc{Subdivision_surfaces_3} supported. In this section, we will guide -you through the creation of Catmull-Clark subdivision. +%Loop, Catmull-Clark, Doo-Sabin and $\sqrt{3}$ subdivision methods +%are popular in practice. Yet from time to time you may want to +%create your own method. You may be a graduate student believing +%in a perfect subdivision scheme, or +%you just want a unique surface which looks simply bad. In either case, +%\ccc{Subdivision_surfaces_3} allows you to try your beloved algorithms +%with a small amount of efforts. The best way to learn how to create +%a your-name subdivision is by digging into one of the four subdivisions +%\ccc{Subdivision_surfaces_3} supported. +%In this section, we will guide you through the implementation of +%Catmull-Clark subdivision. %This section explain how do we implement the %Catmull-Clark subdivision based on the framework of %\ccc{Subdivision_surfaces_3}. +\ccc{Subdivision_surfaces_3} gives you easy-to-use functions on +Catmull-Clark, Loop, Doo-Sabin and $\sqrt{3}$ subdivision methods. +But \ccc{Subdivision_surfaces_3} is more like a framework that let +you extend the methods with ease. This section explains the process +of \emph{implementing} the Catmull-Clark subdivision within +\ccc{Subdivision_surfaces_3}. Following this procedure, you can +easily implement a new subdivision method based on the refinement +patterns in \ccc{Subdivision_surfaces_3} -When a subdivision scheme is developed, a refinement scheme (i.e.~a -parametrization) is chosen, and then a set of rules (i.e.~geometry -masks) are developed to generate the new points (to meet certain -mathematics conditions). E. Catmull and J. Clark picked the \emph{P}rimal -\emph{Q}uadtrateral \emph{Q}uadrisection (PQQ) to be the refinement scheme, -and developed a set of geometry masks to generate (more precisely, to -approximate) the B-spline surface from the input polyhedral mesh (i.e.~the -control mesh). To implement Catmull-Clark subdivision, we need to -implement the mesh data structure, the refinement on the mesh data -structure, and the geometry masks. Luckily enough, we can use -\ccc{CGAL::Polyhedron_3} as the mesh data structure, and use the -PQQ function in \ccc{Subdivision_surfaces_3} to provide the refinement. -\ccc{Subdivision_surfaces_3} also supports three other refinements that -you can choose to use for your subdivision. These refinements are -PT(riangle)Q for Loop subdivision, D(ual)QQ for Doo-Sabin subdivision, -and $\sqrt{3}$ triangulation for $\sqrt{3}$ -subdivision. Here is the function declaration of the PQQ refinement. +When a subdivision method is developed, a refinement pattern is +chosen, and then a set of geometry masks are developed to +\emph{position} the new points. +E. Catmull and J. Clark picked the \emph{P}rimal \emph{Q}uadtrateral +\emph{Q}uadrisection (PQQ) to be the refinement pattern, +and developed a set of geometry masks to generate (or more precisely, +to approximate) the B-spline surface from the control polyhedral +mesh. + +There are three key components of implementing +Catmull-Clark subdivision: +\begin{itemize} +\item +a mesh data structure that can represent arbitrary 2-manifolds, +\item +a process that refines the mesh data structure, +\item +and the geometry masks that compute and assign the new points. +\end{itemize} + +%We have the mesh data structure in \ccc{CGAL::Polyhedron_3}, and +%we have the PQQ refinement in \ccc{Subdivision_surfaces_3} that +%works on \ccc{CGAL::Polyhedron_3}. But we still need the +%geometry masks to finish the job. +%\ccc{Subdivision_surfaces_3} also supports three other refinements that +%you can choose to use for your subdivision. These refinements are +%PT(riangle)Q for Loop subdivision, D(ual)QQ for Doo-Sabin subdivision, +%and $\sqrt{3}$ triangulation for $\sqrt{3}$ +%subdivision. Here is the function declaration of the PQQ refinement. +\ccc{Subdivision_surfaces_3} defines a function that covers all +three components for Catmull-Clark subdivision. \begin{ccExampleCode} -template -class Subdivision_surfaces_3 { - template