% =============================================================================
% 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.2 \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 ===================================================================
