cgal/Tutorial/tutorial/Polyhedron/doc/subdivision.tex

46 lines
2.0 KiB
TeX

The second part of the tutorial focuses on the design and the
implementation of $\sqrt{3}$ (\figurename\ \ref{fig:sqrt3}),
Quad-Triangle subdivision (\figurename\ \ref{fig:quad-triangle})
and our combinatory subdivision library (CSL).
In addition to its importance in the surface modeling, we choose
subdivision algorithms to demonstrate both the
\italic{connectivity operation} (refinement) and the
\italic{geometry operation} (smoothing) of a
\cgalpoly . These two operations are the
primary implementation components required by algorithms on polyhedron
meshes. Readers intended to design and implement mesh algorithms other
than subdivisions will also be benefited from the techniques we
proposed here.
The key to implement a subdivision algorithm is to efficiently support
the refinement, i.e.\ the connectivity modifications. Two approaches
are introduced to support the refinement: the \italic{Euler operators}
(operator scheme) and the \italic{modifier callback mechanism}
(modifier scheme). The operator scheme reconfigures the connectivity
with a combination of Euler operators. $\sqrt{3}$
subdivision~\cite{sqrt3} is used to demonstrate this scheme. We also
compare our implementation with the $\sqrt{3}$ subdivision provided in
OpenMesh library.
Though simple and efficient in some refinements, e.g.\ $\sqrt{3}$
subdivision, the correct combination of the operators is hard to find
for some refinements, e.g.\ Doo-Sabin subdivision~\cite{ds}. The
modifier scheme solves the problem by letting the programmers create
their own combinatorial operators using the polyhedron incremental
builder. Quad-Triangle subdivision~\cite{qts,l-pg-03} is used to
demonstrate this scheme.
% ------------------------------------------------------------------------
\subsection{$\sqrt{3}$ Subdivision}
\input sqrt3
% ------------------------------------------------------------------------
\subsection{Quad-triangle Subdivision}
\input qt
% ------------------------------------------------------------------------
\subsection{Combinatorial Subdivision Library}
\input subtempl