mirror of https://github.com/CGAL/cgal
133 lines
4.1 KiB
TeX
133 lines
4.1 KiB
TeX
\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}
|