diff --git a/Subdivision_method_3/doc_tex/Subdivision_method_3/main.tex b/Subdivision_method_3/doc_tex/Subdivision_method_3/main.tex index 66fbdbd8f28..b543b8a8b4c 100644 --- a/Subdivision_method_3/doc_tex/Subdivision_method_3/main.tex +++ b/Subdivision_method_3/doc_tex/Subdivision_method_3/main.tex @@ -354,11 +354,11 @@ void PQQ(Polyhedron& p, Mask mask, int depth) \end{ccExampleCode} \ccc{Polyhedron} is a model of \ccc{CGAL::Polyhedron_3}, which -is a mesh data structure that can represent arbitrary -2-manifolds. \ccc{PQQ(...)} provides the process refining +is a generic mesh data structure of arbitrary +2-manifolds. \ccc{PQQ()} provides the process refining the control polyhedron \ccc{p}. During the refinement, -\ccc{PQQ(...)}, the \emph{refinement host}, computes and assigns the -new points by communicating with the \ccc{mask}. +\ccc{PQQ()}, the \emph{refinement host}, computes and assigns the +new points by coorperating with the \ccc{mask}. To implement Catmull-Clark subdivision, \ccc{Mask}, the \emph{geometry policy}, has to realize the geometry masks of Catmull-Clark subdivision. @@ -372,7 +372,7 @@ To implement the geometry masks, we need to know how a mask communicates with the refinement host. The PQQ refinement defines three stencils, and therefor three geometry masks are required for Catmull-Clark subdivision. -The interfaces of the stencils are specified like +The interfaces of the stencils are specified as the policy class \ccc{PQQ_stencil_3}. \begin{ccExampleCode} @@ -384,11 +384,11 @@ class PQQ_stencil_3 { }; \end{ccExampleCode} -Now we can compute the new points using the primitive handle -passed into the policy functions, and assign the result to +A mask computes the new point with the primitive handle +passed into the policy function, and assigns the new point to \ccc{Point& pt}. Since our goal is to implement Catmull-Clark -subdivision, we need to implement the policy functions by its -geometry masks. +subdivision, we need to implement the policy functions realizing +its geometry masks. %For clarity, we rename the policy class %to indicate geometry masks are in place. @@ -444,16 +444,19 @@ class CatmullClark_mask_3 { }; \end{ccExampleCode} -Note types used in this example (such as \ccc{Point} and -\ccc{Facet_handle}) are assumed to be type-defined within the -\ccc{Polyhedron}. This \ccc{CatmullClark_mask_3} is designed +The listed codes show the default implementation of Catmull-Clark +masks (and hence the Catmull-Clark subdivision function) +in \ccc{Subdivision_method_3}. +This default implementation assumes the \emph{types} +(such as \ccc{Point} and \ccc{Facet_handle}) are defined +within the \ccc{Polyhedron}. It is designed to work on a \ccc{CGAL::Polyhedron_3} with the default CGAL kernel geometry. You may need to rewrite the geometry computation -in the code to match the kernel geometry of your application. +to match the kernel geometry of your application. -To excute the subdivision, you can +To invoke the subdivision method, you can simply call the \ccc{PQQ(...)} with the Catmull-Clark mask -we just designed. +we just defined. \begin{ccExampleCode} PQQ(p, CatmullClark_mask_3(), depth); @@ -467,21 +470,24 @@ PQQ(p, CatmullClark_mask_3(), depth); %\end{ccExampleCode} Loop, Doo-Sabin and $\sqrt{3}$ subdivisions are implemented -with a similar process: pick a refinement host and implement -the geometry policy. To develop your own subdivision with -\ccc{Subdivision_method_3}, the key is -to find the right combination of the host and the policy, -which are explained in the following sections. +in a similar process: pick a refinement host and implement +the geometry policy. The key of developing your own +subdivision method is implementing the right combination of +the refinement host and the geometry policy. It is +explained in the next two sections. % +-------------------------------------------------------------+ \section{Refinement Host} \label{secRefHost} -\ccc{Subdivision_method_3} provides four refinement hosts of primal -quadrilateral quadrisection (PQQ), primal triangle -quadrisection (PTQ), dual quadrilateral -quadrisection (DQQ) and $\sqrt{3}$ triangulation, which -are used by Catmull-Clark, Loop, \DS\ and $\sqrt{3}$ subdivision, -respectively. +A refinement host is a function with template parameters of +a polyhedron class and a geometry mask class. It refines +the input polyhedron, and assigns new points by the geometry masks. +\ccc{Subdivision_method_3} supports four refinement hosts: +primal quadrilateral quadrisection (PQQ), +primal triangle quadrisection (PTQ), dual quadrilateral +quadrisection (DQQ) and $\sqrt{3}$ triangulation. +They are respectively used by Catmull-Clark, Loop, \DS\ and $\sqrt{3}$ +subdivision. \begin{ccTexOnly} \begin{center} @@ -502,20 +508,18 @@ respectively. \begin{ccExampleCode} -template -class Subdivision_method_3 { - // S is the geometry policy realizing the geometry masks - template