%% =============================================================================
%% The CGAL Reference Manual
%% Chapter: Geometric Optimisation
%% -----------------------------------------------------------------------------
%% file   : doc_tex/basic/Optimisation/Optimisation_ref/intro.tex
%% package: Optimisation_doc
%% author : Sven Schönherr <sven@inf.ethz.ch>
%% -----------------------------------------------------------------------------
%% $Id$
%% $Date$
%% =============================================================================

\newcommand{\inputOpt}[1]{\input{Optimisation_ref/#1.tex}}

\newcommand{\linebreakByHand}{\ccTexHtml{\linebreak[4]}{}}
\newcommand{  \newlineByHand}{\ccTexHtml{\\}{}}

%% cross references
\ccIndexSubitemSeeAlso{minimum enclosing}{smallest enclosing}
\ccIndexSubitemSeeAlso{minimum spanning}{smallest enclosing}
\ccIndexSubitemSeeAlso{concentric spheres}{annulus}

%% -----------------------------------------------------------------------------
\ccRefChapter{Geometric Optimization}
\ccChapterAuthor{Kaspar Fischer \and Bernd G{\"a}rtner \and Thomas Herrmann \and Michael Hoffmann
  \and Eli Packer \and Sven Sch{\"o}nherr}


This chapter describes concepts, classes, and functions for solving
geometric optimization problems. They are divided into four categories.

\paragraph{Bounding Areas and Volumes.}
Smallest enclosing circle and ellipse (2D), smallest enclosing rectangle,
parallelogram, and strip (2D), rectangular $p$-center (2D), smallest
enclosing sphere and annulus (dD), approximate
minimum-volume enclosing ellipsoid with user-specified
approximation ratio (dD).

\paragraph{Inscribed Areas.}
Maximum area and perimeter inscribed $k$-gon (2D), extremal inscribed
$k$-gon (2D), largest empty isorectangle (2D).

\paragraph{Optimal Distances.}
All furthest neigbors (2D), width of point set (3D), polytope distance (dD).

\paragraph{Advanced Techniques.}
Monotone and sorted matrix search.

\section*{Assertions}
The optimization 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{sec:checks}.

\section{Classified References Pages}

%% -----------------------------------------------------------------------------
\subsection*{Bounding Areas and Volumes}

\ccRefIdfierPage{CGAL::Min_circle_2<Traits>}\\[1ex]
\ccRefIdfierPage{CGAL::Min_circle_2_traits_2<K>}\\[1ex]
\ccRefConceptPage{MinCircle2Traits}

\smallskip

\ccRefIdfierPage{CGAL::Min_ellipse_2<Traits>}\\[1ex]
\ccRefIdfierPage{CGAL::Min_ellipse_2_traits_2<K>}\\[1ex]
\ccRefConceptPage{MinEllipse2Traits}

\smallskip

\ccRefIdfierPage{CGAL::Approximate_min_ellipsoid_d<Traits>}\\
\ccRefConceptPage{ApproximateMinEllipsoid_d_Traits_d}

\smallskip

\ccRefIdfierPage{CGAL::min_rectangle_2}\\
\ccRefIdfierPage{CGAL::min_parallelogram_2}\\
\ccRefIdfierPage{CGAL::min_strip_2}\\[1ex]
\ccRefIdfierPage{CGAL::Min_quadrilateral_default_traits_2<K>}\\[1ex]
\ccRefConceptPage{MinQuadrilateralTraits_2}

\smallskip

\ccRefIdfierPage{CGAL::rectangular_p_center_2}\\[1ex]
\ccRefIdfierPage{CGAL::Rectangular_p_center_default_traits_2<K>}\\[1ex]
\ccRefConceptPage{RectangularPCenterTraits_2}

\smallskip

\ccRefIdfierPage{CGAL::Min_sphere_d<Traits>}\\
\ccRefIdfierPage{CGAL::Min_annulus_d<Traits>}\\[1ex]
\ccRefIdfierPage{CGAL::Optimisation_d_traits_2<K,ET,NT>}\\
\ccRefIdfierPage{CGAL::Optimisation_d_traits_3<K,ET,NT>}\\
\ccRefIdfierPage{CGAL::Optimisation_d_traits_d<K,ET,NT>}\\[1ex]
\ccRefConceptPage{OptimisationDTraits}

\smallskip

\ccRefIdfierPage{CGAL::Min_sphere_of_spheres_d<Traits>}\\
\ccRefConceptPage{MinSphereOfSpheresTraits}

%% -----------------------------------------------------------------------------
\subsection*{Inscribed Areas}

\ccRefIdfierPage{CGAL::maximum_area_inscribed_k_gon_2}\\
\ccRefIdfierPage{CGAL::maximum_perimeter_inscribed_k_gon_2}\\
\ccRefIdfierPage{CGAL::extremal_polygon_2}\\
\ccRefIdfierPage{CGAL::Largest_empty_iso_rectangle_2<T>}\\[1ex]
\ccRefIdfierPage{CGAL::Extremal_polygon_area_traits_2<K>}\\
\ccRefIdfierPage{CGAL::Extremal_polygon_perimeter_traits_2<K>}\\[1ex]
\ccRefConceptPage{ExtremalPolygonTraits_2}\\
\ccRefConceptPage{LargestEmptyIsoRectangleTraits_2}

%% -----------------------------------------------------------------------------
\subsection*{Optimal Distances}

%%\ccRefIdfierPage{CGAL::width_2}%\\[1ex]
%%\ccRefIdfierPage{CGAL::Min_quadrilateral_default_traits_2<K>}\\[1ex]
%%\ccRefConceptPage{MinQuadrilateralTraits_2}

%%\smallskip

\ccRefIdfierPage{CGAL::all_furthest_neighbors_2}\\[1ex]
%%\ccRefIdfierPage{CGAL::All_furthest_neighbors_default_traits_2<K>}\\[1ex]
\ccRefConceptPage{AllFurthestNeighborsTraits_2}

\smallskip

\ccRefIdfierPage{CGAL::Width_3<Traits>}\\[1ex]
\ccRefIdfierPage{CGAL::Width_default_traits_3<K>}\\[1ex]
\ccRefConceptPage{WidthTraits_3}

\smallskip

\ccRefIdfierPage{CGAL::Polytope_distance_d<Traits>}\\[1ex]
\ccRefIdfierPage{CGAL::Optimisation_d_traits_2<K,ET,NT>}\\
\ccRefIdfierPage{CGAL::Optimisation_d_traits_3<K,ET,NT>}\\
\ccRefIdfierPage{CGAL::Optimisation_d_traits_d<K,ET,NT>}\\[1ex]
\ccRefConceptPage{OptimisationDTraits}

%% -----------------------------------------------------------------------------
\subsection*{Advanced Techniques}

\ccRefIdfierPage{CGAL::monotone_matrix_search}\\[1ex]
\ccRefIdfierPage{CGAL::Dynamic_matrix<M>}\\[1ex]
\ccRefConceptPage{MonotoneMatrixSearchTraits}\\
\ccRefConceptPage{BasicMatrix}

\smallskip

\ccRefIdfierPage{CGAL::sorted_matrix_search}\\[1ex]
\ccRefIdfierPage{CGAL::Sorted_matrix_search_traits_adaptor<F,M>}\\[1ex]
\ccRefConceptPage{SortedMatrixSearchTraits}

\smallskip

%% =============================================================================

%% Bounding Areas and Volumes

\inputOpt{main_Min_circle_2}
\inputOpt{main_Min_ellipse_2}
\inputOpt{main_Min_quadrilateral_2}
\inputOpt{main_Rectangular_p_centers}

\inputOpt{main_Min_sphere_d}
\inputOpt{main_Min_annulus_d}

\inputOpt{main_Min_sphere_of_spheres_d}
\inputOpt{main_Approximate_min_ellipsoid_d}

\inputOpt{main_Optimisation_d_traits}

%% Inscribed Areas

\inputOpt{main_Extremal_polygons}

\inputOpt{main_Largest_empty_iso_rectangle_2}

%% Optimal Distances

\inputOpt{main_All_furthest_neighbors}

\inputOpt{main_Width_3}

\inputOpt{main_Polytope_distance_d}


%% Advanced Techniques

\inputOpt{main_Matrix_search}


%% ===== EOF ===================================================================
