cgal/Packages/Optimisation_doc/doc_tex/basic/Optimisation/main.tex

102 lines
4.0 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{\linebreakByHand}{\ccTexHtml{\\}{}}
\newcommand{\SaveSpaceByHand}{} %%%% [2]{\ccTexHtml{#1}{#2}}
\chapter{Geometric Optimisation} \label{Optimisation}
\RCSdefDate{\OptRCSDate}{$Date$}
\ccChapterRelease{Release: 2.0 \ccTexHtml{\quad}{ , } \OptRCSDate}
\ccChapterAuthor{Bernd G{\"a}rtner}\ccTexHtml{\\}{<br>}
\ccChapterAuthor{Michael Hoffmann}\ccTexHtml{\\}{<br>}
\ccChapterAuthor{Sven Sch{\"o}nherr}
\ccTexHtml{\thispagestyle{empty}}{}
\begin{ccTexOnly}\section*{Introduction}\end{ccTexOnly}
\begin{ccHtmlOnly}<H2>Introduction</H2><P>\end{ccHtmlOnly}
This chapter describes routines for solving geometric optimisation problems.
The first two sections contain algorithms for computing and updating the
\begin{itemize}
\item smallest enclosing circle
(Section~\ref{sec:smallest_enclosing_circles}) and the
\item smallest enclosing ellipse
(Section~\ref{sec:smallest_enclosing_ellipses}), respectively,
\end{itemize}
of a finite point set. The remaining sections describe algorithms for
searching in matrices with specific properties and some applications.
In particular, there are general implementations of
\begin{itemize}
\item monotone matrix search (Section~\ref{secMonotoneMatrixSearch}),
which can be applied to compute
\begin{itemize}
\item extremal polygons of a convex polygon
(Section~\ref{secComputingExtremalPolygons}) \textit{or}
\item all furthest neighbors for the vertices of a convex polygon
(Section~\ref{secAllFurthestNeighbors}),
\end{itemize}
\item and sorted matrix search (Section~\ref{secSortedMatrixSearch}),
which can be used to compute the $p$-centers of a planar point set
(Section~\ref{sec_RectangularPCenters}).
\end{itemize}
\subsubsection*{Traits Class}
The class and function templates are parameterized with a traits class
which defines the abstract interface between the optimisation
algorithm and the primitives it uses. We provide traits class
implementations that interface the optimisation algorithms with the
\cgal\ kernel. For some algorithms, in addition, we provide traits
class adapters to user supplied point classes. Finally, we describe
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 implementations 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}.
\newcommand{\cgalSetOptTraitsAdaptLayout}{\ccTexHtml{%
\ccSetThreeColumns{CGAL_Oriented_side}{}{returns constants
\ccc{CGAL_LEFTTURN}, \ccc{CGAL_COLLINEAR}}
\ccPropagateThreeToTwoColumns}{}}
\newcommand{\cgalSetOptTraitsAdaptReqLayout}{\ccTexHtml{%
\ccSetThreeColumns{CGAL_Oriented_side}{da.get_hw( Point p).}{}
\ccPropagateThreeToTwoColumns}{}}
\newcommand{\cgalSetOptTraitsReqLayout}{\ccTexHtml{%
\ccSetThreeColumns{CGAL_Oriented_side}{}{returns
\ccc{CGAL_ON_BOUNDED_SIDE}, \ccc{CGAL_ON_BOUNDARY}}
\ccPropagateThreeToTwoColumns}{}}
\ccHtmlNoClassToc
\input{smallest_enclosing_circles}
\input{smallest_enclosing_ellipses}
\input{spec_extremal_polygons}
\input{spec_all_furthest_neighbors}
\input{spec_rectangular_p_centers}
\input{spec_monotone_matrix_search}
\input{spec_sorted_matrix_search}
% ===== EOF ===================================================================