\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}