mirror of https://github.com/CGAL/cgal
132 lines
4.1 KiB
TeX
132 lines
4.1 KiB
TeX
\documentclass[letter,twoside,10pt]{article}
|
|
\usepackage{tutorial}
|
|
\usepackage[OT1]{fontenc}
|
|
|
|
% ------------------------------------------------------------------------
|
|
\usepackage{graphicx}
|
|
\usepackage{subfigure}
|
|
\usepackage{epsfig}
|
|
\usepackage{psfrag}
|
|
%\usepackage{}
|
|
% used to write c++ code/algorithms
|
|
\usepackage{listings}
|
|
\usepackage{fancyvrb}
|
|
|
|
%\psdraft
|
|
|
|
% hyperref stuff
|
|
\usepackage{hyperref}
|
|
\hypersetup{
|
|
pdftitle={A Tutorial on CGAL Polyhedron
|
|
for Subdivision Algorithms},
|
|
pdfauthor={INRIA Geometrica},
|
|
pdfsubject={CGAL},
|
|
pdfkeywords={},
|
|
pdfpagemode=UseThumbs,
|
|
baseurl={http://www.cgal.org},
|
|
colorlinks=true,
|
|
linkcolor=black,
|
|
anchorcolor=black,
|
|
citecolor=black,
|
|
filecolor=black,
|
|
menucolor=black,
|
|
pagecolor=black,
|
|
urlcolor=blue,
|
|
bookmarksopen=false,}
|
|
% end hyperref stuff
|
|
|
|
\lstset{language=C++, basicstyle=\scriptsize, commentstyle=\color{red}, aboveskip=.7cm, belowskip=.5cm, frame=tb}
|
|
|
|
\input{tutorial.def}
|
|
|
|
% =========================================================================
|
|
\begin{document}
|
|
|
|
% TITLE
|
|
% ------------------------------------------------------------------------
|
|
\date{}
|
|
\title{{\LARGE {\sffamily\bfseries A Tutorial on CGAL Polyhedron \\
|
|
for Subdivision Algorithms}}}
|
|
|
|
\author{\small
|
|
\sffamily Le-Jeng Shiue\footnote{SurfLab, University of Florida}
|
|
\and \small
|
|
\sffamily Pierre Alliez\footnote{GEOMETRICA, INRIA Sophia-Antipolis}
|
|
\and \small
|
|
\sffamily Radu Ursu\footnote{Geometry Factory, Sophia-Antipolis}
|
|
\and \small
|
|
\sffamily Lutz Kettner\footnote{MPII, Saarbr\"ucken}}
|
|
\maketitle
|
|
|
|
\thispagestyle{empty}
|
|
|
|
% ABSTRACT
|
|
% ------------------------------------------------------------------------
|
|
\abstract{
|
|
This document is a tutorial on how to get started with the polyhedron
|
|
structure provided by CGAL, the Computational Geometry Algorithm
|
|
Library. Assuming the reader to be familiar with the C++ template
|
|
mechanisms and the key concepts of the STL (Standard Template
|
|
Library), we first demonstrate two different approaches for
|
|
implementing mesh subdivision schemes. \emph{Euler operators} is
|
|
applied for $\sqrt{3}$ subdivision and the \emph{modifier callback
|
|
mechanism} is applied for the Quad-Triangle subdivision. Both
|
|
approaches are based on the build-in functionalities of the CGAL
|
|
polyhedron. We then introduce a \emph{combinatory subdivision
|
|
library} (CSL) with increasing level of sophistication and
|
|
abstraction. CSL offers a convenient way to design user-customized
|
|
subdivision schemes through the definition of rule templates.
|
|
Catmull-Clark and Doo-Sabin schemes are used to demonstrate the design
|
|
and implementation of CSL. Two companion applications based on OpenGL,
|
|
one developed with Windows MFC, and the other developed with Qt,
|
|
showcase the subdivision schemes listed above, as well as several
|
|
functionalities for interaction and visualization. }
|
|
|
|
\vskip 3mm
|
|
|
|
\noindent {\bf Keywords:}
|
|
CGAL library,
|
|
tutorial,
|
|
halfedge data structure,
|
|
polyhedron structure,
|
|
subdivision surfaces,
|
|
quad-triangle,
|
|
$\sqrt{3}$,
|
|
Loop,
|
|
Doo-Sabin,
|
|
Catmull-Clark,
|
|
OpenGL.
|
|
|
|
% INTRODUCTION
|
|
% ------------------------------------------------------------------------
|
|
\section{Introduction}
|
|
\input intro
|
|
|
|
% PREREQUISITES
|
|
% ------------------------------------------------------------------------
|
|
\section{Background and Prerequisite}
|
|
\input prereq
|
|
|
|
% ------------------------------------------------------------------------
|
|
\section{Polyhedron Viewer}
|
|
\input polyviewer
|
|
|
|
% ------------------------------------------------------------------------
|
|
\section{Subdivision Surfaces}
|
|
\input subdivision
|
|
|
|
% ------------------------------------------------------------------------
|
|
\section{Auxiliary Geometric Algorithms}
|
|
\input gc
|
|
|
|
% ------------------------------------------------------------------------
|
|
\section{Application demo}
|
|
\input demo
|
|
|
|
% ------------------------------------------------------------------------
|
|
% REFERENCES
|
|
\bibliographystyle{alpha}
|
|
\bibliography{tutorial}
|
|
|
|
\end{document}
|