cgal/Tutorial/tutorial/Polyhedron/doc/save/tutorial00.tex

124 lines
3.5 KiB
TeX

\documentclass[a4paper,twoside,10pt]{article}
\usepackage{tutorial}
\input{tutorial.def}
\begin{document}
% TITLE
\date{}
\title{{\LARGE {\sffamily\bfseries Getting started with CGAL
Polyhedron}}\\ the example of subdivision surfaces}
\author{
\sffamily Pierre Alliez\footnote{GEOMETRICA, INRIA Sophia-Antipolis}
\and
\sffamily Andreas Fabri\footnote{GeometryFactory, Sophia-Antipolis}
\and
\sffamily Lutz Kettner\footnote{Max-Planck Institut für Informatik, Saarbrücken}
\and
\sffamily Le-Jeng Shiue\footnote{SurfLab, University of Florida}
\and
\sffamily Radu Ursu\footnote{GEOMETRICA, INRIA Sophia-Antipolis}}
\maketitle
\thispagestyle{empty}
% ABSTRACT
\abstract{This document gives a rapid description for a user to get
started with the halfedge data structure provided by the Computational
Geometry Algorithm Library (CGAL). Assuming the reader to be familiar
with the C++ template mechanisms and the key concepts of the Standard
Template Library (STL), we describe three different approaches with
increasing level of sophistication for implementing mesh subdivision
schemes. The simplest approach uses simple Euler operators to
implement the $\sqrt{3}$ subdivision scheme applicable to triangle
meshes. A second approach overloads the incremental builder already
provided by CGAL to implement the quad-triangle subdivision scheme
applicable to polygon meshes. The third approach is more generic and
offers an efficient way to design its own subdivision scheme through
the definition of a set of rules. Catmull-Clark, Loop and Doo-Sabin
schemes are illustrated using the latter approach. A companion MS .NET
application developed using MFC and OpenGL implements the subdivision
schemes listed herein, as well as several functionalities for
interaction, visualization and raster/vectorial output.}
\vskip 3mm
\noindent {\bf Keywords:}
CGAL library,
tutorial,
halfedge data structure,
polygon surface mesh,
subdivision surfaces,
quad-triangle subdivision scheme,
$\sqrt{3}$,
Loop,
Doo-Sabin,
Catmull-Clark,
OpenGL.
\section{Introduction}
Motivations:
\begin{itemize}
\item stop reinventing the wheel
\item the use of an optimized and robust computational
geometry library guarantees a much easier implementation, as
well as fast and robust results
\item feel the power of generic programming
\end{itemize}
\section{Prerequisites}
C++ and generic programming
STL
Concepts of iterators and circulators in general.
Concepts of iterators and circulators in general on a mesh.
\section{Halfedge data structure}
Description.
Why it is so convenient (circulation around vertices, inside facets,
along a boundary, etc).
Euler operators.
\section{Subdivision surfaces}
A nice example to illustrate (i) iteration and circulation on a
halfedge data structure, (ii) modification of the connectivity, and
iii) modification of the geometry.
\subsection{Concept}
A subdivision surface is the limit surface of a subdivision process
applied over a control mesh...etc.
\subsection{Using Euler operators}
$\sqrt{3}$
\subsection{Using incremental builder}
quad-triangle
\subsection{Using a rule template}
Doo-Sabin, Catmull-Clark, Loop.
\section{Companion example application}
List of features, snapshots.
How to compile it.
How to use it.
\section{Conclusion}
\end{document}