mirror of https://github.com/CGAL/cgal
69 lines
2.8 KiB
TeX
69 lines
2.8 KiB
TeX
% =============================================================================
|
|
% The CGAL Reference Manual
|
|
% Chapter: Optimisation
|
|
% -----------------------------------------------------------------------------
|
|
% file : doc_tex/basic/Optimisation/main.tex
|
|
% author: Bernd Gärtner, Sven Schönherr (sven@inf.fu-berlin.de)
|
|
% -----------------------------------------------------------------------------
|
|
% $Revision$
|
|
% $Date$
|
|
% =============================================================================
|
|
|
|
\newcommand{\ccSetThreeColumnsByHand}{\ccTexHtml{\ccSetThreeColumns}{}}
|
|
\newcommand{\linebreakByHand}{\ccTexHtml{\\}{}}
|
|
\newcommand{\SaveSpaceByHand}{} %%%% [2]{\ccTexHtml{#1}{#2}}
|
|
|
|
\chapter{Optimisation} \label{Optimisation}
|
|
\RCSdefDate{\OptRCSDate}{$Date$}
|
|
|
|
\ccChapterRelease{Release: 1.3 \ccTexHtml{\quad}{ , } \OptRCSDate}
|
|
|
|
\ccChapterAuthor{Bernd Gärtner}\ccTexHtml{\par}{<br>}
|
|
\ccChapterAuthor{Sven Schönherr}
|
|
|
|
\ccTexHtml{\thispagestyle{empty}}{}
|
|
|
|
\section{Introduction}
|
|
|
|
This chapter describes routines for computing and updating the
|
|
smallest enclosing circle resp.\ ellipse of a finite point set.
|
|
Formally, the `smallest enclosing circle' is the boundary of the
|
|
closed disk of minimum area covering the point set. It is known that
|
|
this disk is unique. We usually identify the disk with its bounding
|
|
circle, allowing us to talk about points being on the boundary of the
|
|
circle, etc. The same holds for the smallest enclosing ellipse.
|
|
|
|
The algorithms work in an incremental manner. They are implemented
|
|
as semi-dynamic data structures, thus allowing to insert points
|
|
while maintaining the smallest enclosing circle resp.\ ellipse.
|
|
|
|
\subsubsection*{Traits Class}
|
|
The class templates are parameterized with a traits class which
|
|
defines the abstract interface between the optimisation algorithm and
|
|
the primitives it uses. We provide a traits class implementation that
|
|
interfaces the optimisation algorithms with the \cgal\ kernel. It is
|
|
presented in Section~\ref{sec:opt_traits_impl}. In addition, we
|
|
provide traits class adapters to user supplied point classes, see
|
|
Section~\ref{sec:opt_traits_adapt}. Section~\ref{sec:opt_traits_req}
|
|
describes the requirements that must be fulfilled by traits classes
|
|
for optimisation algorithms. This is at the same time a specification
|
|
for using the provided traits class implementation as for users who
|
|
want to supply their own traits class.
|
|
|
|
\subsubsection*{Assertions}
|
|
The optimisation code uses infix \ccc{OPTIMISATION} in the assertions,
|
|
e.g.\ defining the compiler flag
|
|
\ccc{CGAL_OPTIMISATION_NO_PRECONDITIONS} switches precondition
|
|
checking off, cf.~Section~\ref{assertions}.
|
|
|
|
\clearpage
|
|
\input{Min_circle_2}
|
|
\clearpage
|
|
\input{Min_ellipse_2}
|
|
|
|
\input{traits_implementations}
|
|
\input{traits_adapters}
|
|
\input{traits_requirements}
|
|
|
|
% ===== EOF ===================================================================
|