\documentclass[letter,twoside,10pt]{article} \usepackage{tutorial} \usepackage[OT1]{fontenc} \input{tutorial.def} % ------------------------------------------------------------------------ \usepackage{graphicx} \usepackage{subfigure} \usepackage{epsfig} \usepackage{psfrag} %\psdraft % hyperref stuff \usepackage{hyperref} \hypersetup{ pdftitle={Getting started with CGAL Polyhedron}, pdfauthor={INRIA Geometrica}, pdfsubject={A tutorial for 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 % ========================================================================= \begin{document} % TITLE % ------------------------------------------------------------------------ \date{} \title{{\LARGE {\sffamily\bfseries Getting started with CGAL Polyhedron}}\\ the example of subdivision surfaces} \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{GEOMETRICA, INRIA Sophia-Antipolis}} \maketitle \thispagestyle{empty} % ABSTRACT % ------------------------------------------------------------------------ \abstract{This document is a tutorial on how to get started with the halfedge data 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 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 generic and offers a convenient way to design its own subdivision scheme through the definition of rule templates. Catmull-Clark, Loop and Doo-Sabin schemes are illustrated using the latter approach. Two companion applications, one developed on Windows with MS .NET, MFC and OpenGL, and the other developed for both Linux and Windows with Qt and OpenGL, implement the subdivision schemes listed above, 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, $\sqrt{3}$, Loop, Doo-Sabin, Catmull-Clark, OpenGL. % INTRODUCTION % ------------------------------------------------------------------------ \section{Introduction} \input intro % PREREQUISITES % ------------------------------------------------------------------------ \section{Prerequisites} \input prereq % ------------------------------------------------------------------------ \section{Polyhedron Data Structure: Fundamentals} \input polyhedron % ------------------------------------------------------------------------ \section{Design and Implemenation of Subdivisions} % Connec Operators \subsection{$\sqrt{3}$-Subdivision using Euler Operators} \input sqrt3 % Inc Builder \subsection{Quad-triangle Subdivision using Incremental Builder} \label{sec:subdivision_builder} \input qt % Templated subdivision rules \subsection{Subdivision using a rule template} \label{sec:subdivision_rule} \input subtempl % APPLICATION DEMO % ------------------------------------------------------------------------ \section{Application demo} \input demo % ------------------------------------------------------------------------ % REFERENCES \bibliographystyle{alpha} \bibliography{tutorial} \end{document}