mirror of https://github.com/CGAL/cgal
102 lines
4.0 KiB
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 ===================================================================
|