mirror of https://github.com/CGAL/cgal
159 lines
5.8 KiB
TeX
159 lines
5.8 KiB
TeX
% +------------------------------------------------------------------------+
|
|
% | Reference manual page: Partition_2_ref/intro.tex
|
|
% +------------------------------------------------------------------------+
|
|
% | 26.6.2000 Susan Hert
|
|
% | Package: Partition_2
|
|
% |
|
|
% |
|
|
%%RefPage: end of header, begin of main body
|
|
% +------------------------------------------------------------------------+
|
|
|
|
%\clearpage
|
|
%\section{Reference Pages for 2D Polygon Partitioning}
|
|
|
|
\ccRefChapter{2D Polygon Partitioning\label{chap:partition_2_ref}}
|
|
\ccChapterAuthor{Susan Hert}
|
|
|
|
\ccEnableRawListOfRefpages
|
|
|
|
|
|
\begin{ccTexOnly}
|
|
\ifnum\ccNewRefManualStyle=\ccTrue
|
|
\end{ccTexOnly}
|
|
A {\em partition}\ccIndexMainItemDef{partition} of a polygon is a set
|
|
of polygons such that the interiors of the polygons do not intersect and
|
|
the union of the polygons is equal to the interior of the original polygon.
|
|
Functions are available for partitioning planar polygons into two
|
|
types of subpolygons --- $y$-monotone polygons and convex polygons.
|
|
|
|
The function that produces a $y$-monotone partitioning is based on the
|
|
algorithm presented in \cite{bkos-cgaa-97} which requires $O(n \log n)$ time
|
|
and $O(n)$ space for a polygon with $n$ vertices and guarantees nothing
|
|
about the number of polygons produced with respect to the optimal number.
|
|
Three functions are provided for producing
|
|
convex partitions. Two of these functions produce approximately optimal
|
|
partitions and one results in an optimal partition, where ``optimal'' is
|
|
defined in terms of the number of partition polygons. The two functions
|
|
that implement approximation algorithms are guaranteed to produce no more
|
|
than four times the optimal number of convex pieces. The optimal partitioning
|
|
function provides an implementation of Greene's dynamic programming algorithm
|
|
\cite{g-dpcp-83}, which requires $O(n^4)$ time and $O(n^3)$ space to produce a
|
|
convex partitioning. One of the approximation algorithms is also due to
|
|
Greene \cite{g-dpcp-83} and requires $O(n \log n)$ time and $O(n)$ space
|
|
to produce a convex partitioning given a $y$-monotone partitioning. The
|
|
other approximation algorithm is a result of Hertel and
|
|
Mehlhorn \cite{hm-ftsp-83}, which requires $O(n)$ time and space to produce
|
|
a convex partitioning from a triangulation of a polygon.
|
|
Each of the partitioning functions uses a traits class to supply the
|
|
primitive types and predicates used by the algorithms.
|
|
\begin{ccTexOnly}
|
|
\fi
|
|
\end{ccTexOnly}
|
|
|
|
|
|
|
|
\ccHeading{Assertions}
|
|
|
|
\begin{ccPackage}{polygon partitioning}
|
|
\ccIndexAssertionFlag[polygon partitioning]
|
|
The assertion flags for this package use \ccc{PARTITION} in their names
|
|
({\em e.g.}, \ccc{CGAL_PARTITION_NO_POSTCONDITIONS}).
|
|
The precondition checks for the planar polygon partitioning functions
|
|
are: counterclockwise ordering of the input vertices and simplicity of the
|
|
polygon these vertices represent.
|
|
\ccIndexSubitem[C]{approx_convex_partition_2}{postconditions}
|
|
\ccIndexSubitem[C]{greene_approx_convex_partition_2}{postconditions}
|
|
\ccIndexSubitem[C]{optimal_convex_partition_2}{postconditions}
|
|
\ccIndexSubitem[C]{y_monotone_partition_2}{postconditions}
|
|
The postcondition checks are: simplicity, counterclockwise orientation,
|
|
and convexity (or $y$-monotonicity) of the partition polygons
|
|
and validity of the partition ({\em i.e.}, the partition polygons are
|
|
nonoverlapping and the union of these polygons is the same as the
|
|
original polygon)
|
|
\ccIndexSubitemDef{partition}{valid}.
|
|
\end{ccPackage}
|
|
|
|
\section{Classified Reference Pages}
|
|
|
|
\subsection*{Concepts}
|
|
|
|
\lcTex{
|
|
\ccRefConceptPage{ConvexPartitionIsValidTraits_2}\\
|
|
\ccRefConceptPage{IsYMonotoneTraits_2}\\
|
|
\ccRefConceptPage{OptimalConvexPartitionTraits_2}\\
|
|
\ccRefConceptPage{PartitionTraits_2}\\
|
|
\ccRefConceptPage{PartitionIsValidTraits_2}\\
|
|
\ccRefConceptPage{YMonotonePartitionIsValidTraits_2}\\
|
|
\ccRefConceptPage{YMonotonePartitionTraits_2} \\
|
|
}
|
|
|
|
\lcHtml{
|
|
\input{Partition_2_ref/ConvexPartitionIsValidTraits_2}
|
|
\input{Partition_2_ref/IsYMonotoneTraits_2}
|
|
\input{Partition_2_ref/OptimalConvexPartitionTraits_2}
|
|
\input{Partition_2_ref/PartitionTraits_2}
|
|
\input{Partition_2_ref/PartitionIsValidTraits_2}
|
|
\input{Partition_2_ref/YMonotonePartitionIsValidTraits_2}
|
|
\input{Partition_2_ref/YMonotonePartitionTraits_2}
|
|
}
|
|
|
|
\subsection*{Function Object Concepts}
|
|
|
|
\lcTex{\ccRefConceptPage{PolygonIsValid} \\}
|
|
\lcHtml{\input{Partition_2_ref/PolygonIsValid}}
|
|
|
|
\subsection*{Classes}
|
|
|
|
\lcTex{
|
|
\ccRefIdfierPage{CGAL::Partition_is_valid_traits_2<Traits, PolygonIsValid>}\\
|
|
\ccRefIdfierPage{CGAL::Partition_traits_2<R>} \\
|
|
}
|
|
|
|
\lcHtml{
|
|
\input{Partition_2_ref/Partition_is_valid_traits_2}
|
|
\input{Partition_2_ref/Partition_traits_2}
|
|
}
|
|
|
|
\subsection*{Function Object Classes}
|
|
|
|
\lcTex{
|
|
\ccRefIdfierPage{CGAL::Is_convex_2<Traits>}\\
|
|
\ccRefIdfierPage{CGAL::Is_vacuously_valid<Traits>}\\
|
|
\ccRefIdfierPage{CGAL::Is_y_monotone_2<Traits>} \\
|
|
}
|
|
|
|
\lcHtml{
|
|
\input{Partition_2_ref/Is_convex_2}
|
|
\input{Partition_2_ref/Is_vacuously_valid}
|
|
\input{Partition_2_ref/Is_y_monotone_2_FO}
|
|
}
|
|
|
|
\subsection*{Functions}
|
|
|
|
\lcTex{
|
|
\ccRefIdfierPage{CGAL::approx_convex_partition_2} \\
|
|
\ccRefIdfierPage{CGAL::convex_partition_is_valid_2} \\
|
|
\ccRefIdfierPage{CGAL::greene_approx_convex_partition_2} \\
|
|
\ccRefIdfierPage{CGAL::is_y_monotone_2} \\
|
|
\ccRefIdfierPage{CGAL::optimal_convex_partition_2} \\
|
|
\ccRefIdfierPage{CGAL::partition_is_valid_2} \\
|
|
\ccRefIdfierPage{CGAL::y_monotone_partition_2} \\
|
|
\ccRefIdfierPage{CGAL::y_monotone_partition_is_valid_2} \\
|
|
}
|
|
|
|
\lcHtml{
|
|
\input{Partition_2_ref/approx_convex_partition_2}
|
|
\input{Partition_2_ref/convex_partition_is_valid_2}
|
|
\input{Partition_2_ref/greene_approx_convex_partition_2}
|
|
\input{Partition_2_ref/is_y_monotone_2}
|
|
\input{Partition_2_ref/optimal_convex_partition_2}
|
|
\input{Partition_2_ref/partition_is_valid_2}
|
|
\input{Partition_2_ref/y_monotone_partition_2}
|
|
\input{Partition_2_ref/y_monotone_partition_is_valid_2}
|
|
}
|
|
|
|
\ccPrintSortedListOfRefpages
|
|
|
|
\clearpage
|
|
%% EOF %%
|