Enhanced. Introduced nop strategy, minkowski_sum_by_decomposition(), and hole filtration

This commit is contained in:
Efi Fogel 2015-06-30 13:06:41 +03:00
parent e006eaa6c6
commit 34a36aa2ca
2 changed files with 181 additions and 125 deletions

View File

@ -4167,7 +4167,7 @@ cell neighborhood in $O(m)$ time."
, succeeds = "aarx-clgta-96"
, update = "98.07 rote, 98.03 mitchell, 97.03 rote"
, abstract = "Exploiting the concept of so-called light edges, we introduce
a new way of defining the greedy triangulation GT(S) of a point
a new way of defining the greedy triangulation GT(S) of a point
set S. It provides a decomposition of
GT(S) into levels, and the number of levels allows us to
bound the total edge length of GT(S). In particular, we show
@ -12292,9 +12292,9 @@ method that uses very different techniques."
, pages = "201--290"
, url = "http://wwwpi6.fernuni-hagen.de/Publikationen/tr198.pdf"
, succeeds = "ak-vd-96"
, cites = "ahknu-vdcfc-95, abms-claho-94, aesw-emstb-91, agss-ltacv-89, ahl-sqrpc-90, aiks-fkpmd-91, a-dppuv-82, aaag-ntsp-95, aa-skfgpf-95, aacktrx-tin-96, a-nemts-83, as-vdco-95, ay-aampt1-90, ay-aampt2-90, ar-cvddp-96, a-gvdps-89, a-lbvdc-98, abky-cabmm-88, abcw-cpdts-88, ab-rdt-85, a-sdcgp-85, a-pdpaa-87, a-rpccc-87, a-iadbu-88, a-lcpd-88, a-ndrcv-90, a-vdsfg-91, ae-oacwv-84, aha-mttls-92, ai-grvd-88, as-solri-92, abi-cvus-88, br-rasas-90, bo-arcgi-79, bs-dcms-76, bwy-oetac-80, be-mgot-92i, beg-pgmg-94, b-bnvd, bt-gatuf-85, bmt-dppbp-96, bcdt-osc3d-91i, bdsty-arsol-92, bg-tdrcs-93, bsty-vdhdc-95, bt-rcdt-93, bh-cpcoe-88, b-rgsdd-89, b-vdch-79, b-gtfga-80, bms-hcvdl-94, b-gog-55, c-vmpmp-85, cd-svd-88, crw-gc-91, csy-oscpf-95, cdns-nsrgs-95, c-ochaa-93, ce-iacko-87, cgt-ecabs-95, cx-alesw-96, c-bvdcp-86, c-cdt-89, c-tapga-89, c-gqmgc-93,
cd-vdbcd-85, ckstw-vdl3s-95, csw-fmasp-95, c-wcanh-76, cms-mfdca-94, c-narsc-87, c-agmst-89, cms-frric-93, cs-arscg-89, cmrs-tspvd-93, cw-pspp-86, dj-wtacg-89, ds-oiti-89, bms-plpco-93, dfnp-stdt-91, d-eaclm-77, dk-savd-87, dk-bspwa-97, dn-cgacp-85, d-slsv-34, d-pp-44, d-rysoa-92, dv-cprac-77, dds-saeid-92, de-apphd-96, d-nhndt-87, d-tdt-90, d-fhcdt-92, d-udrdp-50, dl-cvdrp-91, ddg-fsp-83, dfs-dgaag-90, dl-pmtds-89, dl-msp-76, d-ec-83, d-fdcac-87, d-hdvdl-91, e-acg-87, e-atccd-90, e-ubids-95, egs-ueplf-89, egs-oplms-86, eks-sspp-83, em-tdas-94, eos-calha-86, es-vda-86, ess-ztha-93, es-itfwr-96, es-otatd-91, et-qtaml-93, et-ubcdt-93, etw-otama-92, ei-drmwc-79, f-sodt-90, f-iwatd-86, f-nsa2d-92, f-vddt-92, f-savd-87, gs-nsagv-69, gj-cigtn-79, g-3dmud-95, g-agt-85, grr-vdlsm-95, grss-sracp-95,
goy-cvdsl-93, gs-cdtp-78, gks-ricdv-92, gmr-vdmpp-92, gs-pmgsc-85, h-ca-75, h-rvdlp-92, h-gbitp-91, hkp-itnc-91, hn-sc-89, hns-psscp-88, h-pcprn-91, hks-uevsi-93, h-oarms-79, iklm-cdf3s-93, iki-awvdr-94, iss-nriac-92, j-3dtlt-89, j-ctddt-91, j-gspgm-91, jrz-ccdt-91, km-accvd-91, km-icdmc-92, kk-cdtmb-88, kg-cgwac-92, k-csmwt-94, ks-tpscv-93, k-eccs-79, k-ndot-80, k-osps-83, kr-fcm-85, k-cddvd-80, k-cavd-89, kl-ltrab-93, kl-fsc-95, kl-mpsp-95, kmm-ricav-93a, kw-vdbgm-88, k-sssgt-56, kl-fsacl-95, l-dtmmi-94, l-esta-94, l-scsi-77, l-vdlmh-94, l-ricsa-95, l-tdvdl-80, l-matps-82, l-knnvd-82, ld-gvdp-81, ll-gdtpg-86, lw-vdllm-80, lk-qgtam-96, l-ltcrn-94, msw-sblp-92, ms-pggrg-80, m-dtchn-84, mr-vdcdg-90, mks-cplvd-96, m-tdird-76, m-mnfcp-70, m-lpltw-84, mmo-cavd-91, m-zkav-93,
, cites = "ahknu-vdcfc-95, abms-claho-94, aesw-emstb-91, agss-ltacv-89, ahl-sqrpc-90, aiks-fkpmd-91, a-dppuv-82, aaag-ntsp-95, aa-skfgpf-95, aacktrx-tin-96, a-nemts-83, as-vdco-95, ay-aampt1-90, ay-aampt2-90, ar-cvddp-96, a-gvdps-89, a-lbvdc-98, abky-cabmm-88, abcw-cpdts-88, ab-rdt-85, a-sdcgp-85, a-pdpaa-87, a-rpccc-87, a-iadbu-88, a-lcpd-88, a-ndrcv-90, a-vdsfg-91, ae-oacwv-84, aha-mttls-92, ai-grvd-88, as-solri-92, abi-cvus-88, br-rasas-90, bo-arcgi-79, bs-dcms-76, bwy-oetac-80, be-mgot-92i, beg-pgmg-94, b-bnvd, bt-gatuf-85, bmt-dppbp-96, bcdt-osc3d-91i, bdsty-arsol-92, bg-tdrcs-93, bsty-vdhdc-95, bt-rcdt-93, bh-cpcoe-88, b-rgsdd-89, b-vdch-79, b-gtfga-80, bms-hcvdl-94, b-gog-55, c-vmpmp-85, cd-svd-88, crw-gc-91, csy-oscpf-95, cdns-nsrgs-95, c-ochaa-93, ce-iacko-87, cgt-ecabs-95, cx-alesw-96, c-bvdcp-86, c-cdt-89, c-tapga-89, c-gqmgc-93,
cd-vdbcd-85, ckstw-vdl3s-95, csw-fmasp-95, c-wcanh-76, cms-mfdca-94, c-narsc-87, c-agmst-89, cms-frric-93, cs-arscg-89, cmrs-tspvd-93, cw-pspp-86, dj-wtacg-89, ds-oiti-89, bms-plpco-93, dfnp-stdt-91, d-eaclm-77, dk-savd-87, dk-bspwa-97, dn-cgacp-85, d-slsv-34, d-pp-44, d-rysoa-92, dv-cprac-77, dds-saeid-92, de-apphd-96, d-nhndt-87, d-tdt-90, d-fhcdt-92, d-udrdp-50, dl-cvdrp-91, ddg-fsp-83, dfs-dgaag-90, dl-pmtds-89, dl-msp-76, d-ec-83, d-fdcac-87, d-hdvdl-91, e-acg-87, e-atccd-90, e-ubids-95, egs-ueplf-89, egs-oplms-86, eks-sspp-83, em-tdas-94, eos-calha-86, es-vda-86, ess-ztha-93, es-itfwr-96, es-otatd-91, et-qtaml-93, et-ubcdt-93, etw-otama-92, ei-drmwc-79, f-sodt-90, f-iwatd-86, f-nsa2d-92, f-vddt-92, f-savd-87, gs-nsagv-69, gj-cigtn-79, g-3dmud-95, g-agt-85, grr-vdlsm-95, grss-sracp-95,
goy-cvdsl-93, gs-cdtp-78, gks-ricdv-92, gmr-vdmpp-92, gs-pmgsc-85, h-ca-75, h-rvdlp-92, h-gbitp-91, hkp-itnc-91, hn-sc-89, hns-psscp-88, h-pcprn-91, hks-uevsi-93, h-oarms-79, iklm-cdf3s-93, iki-awvdr-94, iss-nriac-92, j-3dtlt-89, j-ctddt-91, j-gspgm-91, jrz-ccdt-91, km-accvd-91, km-icdmc-92, kk-cdtmb-88, kg-cgwac-92, k-csmwt-94, ks-tpscv-93, k-eccs-79, k-ndot-80, k-osps-83, kr-fcm-85, k-cddvd-80, k-cavd-89, kl-ltrab-93, kl-fsc-95, kl-mpsp-95, kmm-ricav-93a, kw-vdbgm-88, k-sssgt-56, kl-fsacl-95, l-dtmmi-94, l-esta-94, l-scsi-77, l-vdlmh-94, l-ricsa-95, l-tdvdl-80, l-matps-82, l-knnvd-82, ld-gvdp-81, ll-gdtpg-86, lw-vdllm-80, lk-qgtam-96, l-ltcrn-94, msw-sblp-92, ms-pggrg-80, m-dtchn-84, mr-vdcdg-90, mks-cplvd-96, m-tdird-76, m-mnfcp-70, m-lpltw-84, mmo-cavd-91, m-zkav-93,
m-uuam-28, m-rcvdp-93, m-spop-93, mmp-dgp-87, ms-getcc-88, mp-fitcp-78, m-osclv-90, m-lavd-91, osy-gvdl-86, osy-gvdl-87, oy-rmpmd-85, oim-iimvd-84, obs-stcav-92, p-etspi-77, pl-ecgvd-95, p-kpudz-82, p-mrpdt-92, ps-cgi-85, p-scnsg-57, r-odtr-91, rr-oprav-94, r-aiv-94, r-mrpdt-90, r-tbvdm-93, rsl-ashts-77, st-pwvt-88, s-cvdhd-82, s-mplbc-85, s-chdch-86, s-nfhdv-87, s-cdtvd-88, s-sdlpc-91, s-barga-93, s-cg-78, sh-cpp-75, s-icpps-85, s-atubl-94, s-let-78, s-vidt-80, s-sagdt-91, s-facdt-87, s-mmdpsl-91a, sd-csdta-95, s-smane-92, si-cvdom-92, soi-toari-90, s-rngam-83, si-atpvd-86, t-otdt-93, too-natdv-83, t-gcvdm-86, t-rngfp-80, v-mstkd-88, v-sgagc-91, v-dmrsl-09, v-nadpc-08, w-eucdt-93, ws-oacdt-87, w-cnddt-81, w-sedbe-91a, www-sdpfo-87, y-cmstk-82, y-amp-87, y-oavds-87, zm-sdnah-91, ZZZ"
, update = "00.11 smid, 00.03 bibrelex, 99.03 bibrelex, 98.11 bibrelex, 98.07 mitchell, 98.03 bibrelex, 97.03 icking"
, annote = "Chapter 5 of su-hcg-00"
@ -12847,9 +12847,9 @@ method that uses very different techniques."
, url = "http://www.ifor.math.ethz.ch/staff/fukuda/fukuda.html"
, update = "98.03 houle, 97.03 pocchiola, 96.05 fukuda"
, annote = "Reverse search is a general exhaustive search technique
which came out of the new convex hull algorithm by the authors.
which came out of the new convex hull algorithm by the authors.
This technique can be applied to many enumeration problems in computer
science, operations research and geometry.
science, operations research and geometry.
It is highly suitable for parallelization."
}
@ -16291,7 +16291,7 @@ rendering. Contains pseudocode."
, number = 4
, year = 1997
, note = "Special issue on parallel I/O. An earlier version
appears in Proc. of the 8th Annual
appears in Proc. of the 8th Annual
ACM Symposium on Parallel Algorithms and
Architectures (SPAA~'96), Padua, Italy, June 1996, 109--118"
, update = "97.03 murali"
@ -18449,12 +18449,12 @@ the interior. Contains pseudocode."
, succeeds = "d-rld-89"
, update = "98.07 bibrelex, 98.03 mitchell, 93.09 held"
, annote = "He considers rectilinear paths in a rectilinear simple polygon. In $O(n\log n)$
preprocessing time and space, he builds a data structure that supports
$O(\log n)$ time queries for distance between two points ($O(1)$ time between
two polygon vertices). He is actually searching for paths that are``smallest'' in
that they are shortest simultaneously in rectilinear link distance and
$L_1$ length (which is always possible). See improvements to $O(n)$ time and
space by Lingas, Maheshwari, and Sack~\cite{lms-parld-95} and
preprocessing time and space, he builds a data structure that supports
$O(\log n)$ time queries for distance between two points ($O(1)$ time between
two polygon vertices). He is actually searching for paths that are``smallest'' in
that they are shortest simultaneously in rectilinear link distance and
$L_1$ length (which is always possible). See improvements to $O(n)$ time and
space by Lingas, Maheshwari, and Sack~\cite{lms-parld-95} and
Schuierer~\cite{s-odssr-96}."
}
@ -20044,6 +20044,16 @@ $O(n^2)$ in the plane."
, keywords = "Delaunay triangulation, probabilistic analysis"
}
@article{bfhhm-epsph-15
, author = "A. Baram and E. Fogel and D. Halperin and M. Hemmer and S. Morr"
, title = "Exact {M}inkowski sums of Polygons With Holes"
, journal = "Internat. J. Comput. Geom. Appl."
, volume = 1
, year = 2015
, pages = "01--01"
, note = "To appear"
}
@techreport{bg-dpd-91
, author = "M. Bern and J. Gilbert"
, title = "Drawing the planar dual"
@ -21011,10 +21021,10 @@ cubes with side-lengths not exceeding 1 in the $3$-dimensional
euclidean space. Let $S$ and $T$ be two points lying outside
the open cubes. Assume one needs to find a short path emanating
from $S$ and terminating at $T$ avoiding the cubes of $\cal P$
under the restriction that the cubes are not known prior to the search.
under the restriction that the cubes are not known prior to the search.
In fact the positions and the side-lengths of the cubes become known
to the searcher as the cubes are contacted. We give an algorithm to
construct a path of length less than
construct a path of length less than
$\frac 32 d + 3 \sqrt 3 \log d + 5$,
where $d > 3 \sqrt 3$ denotes the distance between S and T."
}
@ -24325,7 +24335,7 @@ experimental results are given."
, abstract = "This paper
presents the main algorithmic and design choices that have been
made
to implement triangulations in
to implement triangulations in
the computational geometry algorithms library CGAL."
}
@ -25614,9 +25624,9 @@ present a polynomial-time exact algorithm to solve this problem."
rectangles floating in 3-space, with edges represented by
vertical lines of sight. We apply an extension of the
{Erd\H os}-Szekeres Theorem in a geometric setting to obtain an
upper bound of 56 for size of the largest complete graph which
is representable. On the other hand, we construct a
representation of the complete graph with 22 vertices.
upper bound of 56 for size of the largest complete graph which
is representable. On the other hand, we construct a
representation of the complete graph with 22 vertices.
These are the best existing bounds."
}
@ -28630,7 +28640,7 @@ determinants."
, year = 1993
, update = "98.03 mitchell"
, abstract = "We calculate the partition
of the configuration space $I\!\!R^2 x S^1$
of the configuration space $I\!\!R^2 x S^1$
of a car-like robot, only moving forwards, with respect to the
type of the length optimal paths. This kind of robot is subject to
kinematic constraints on its path curvature and its orientation.
@ -33579,35 +33589,35 @@ determinants."
Given a set of polygonal obstacles of $n$ vertices in the plane,
the problem of processing the all-pairs Euclidean {\em short} path
queries is that of reporting an obstacle-avoiding path $P$ (or
its length) between two arbitrary query points $p$ and $q$ in the
plane, such that the length of $P$ is within a small factor of the
its length) between two arbitrary query points $p$ and $q$ in the
plane, such that the length of $P$ is within a small factor of the
length of a Euclidean {\em shortest} obstacle-avoiding path between
$p$ and $q$. The goal is to answer each short path query quickly
by constructing data structures that capture path information in
the obstacle-scattered plane. For the related all-pairs Euclidean
{\em shortest} path problem, the best known algorithms for even
very simple cases (e.g., {\em rectilinear} shortest paths among
by constructing data structures that capture path information in
the obstacle-scattered plane. For the related all-pairs Euclidean
{\em shortest} path problem, the best known algorithms for even
very simple cases (e.g., {\em rectilinear} shortest paths among
disjoint {\em rectangular} obstacles in the plane) require
at least quadratic space and time to construct a data structure,
so that a length query can be answered in polylogarithmic time.
The previously best known solution to the all-pairs Euclidean
{\em short} path problem also uses a data structure of quadratic
space and superquadratic construction time, in order to answer a
length query in polylogarithmic time. In this paper, we present a
data structure that requires nearly linear space and takes subquadratic
time to construct. Precisely, for any given $\epsilon$ satisfying
so that a length query can be answered in polylogarithmic time.
The previously best known solution to the all-pairs Euclidean
{\em short} path problem also uses a data structure of quadratic
space and superquadratic construction time, in order to answer a
length query in polylogarithmic time. In this paper, we present a
data structure that requires nearly linear space and takes subquadratic
time to construct. Precisely, for any given $\epsilon$ satisfying
$0$ $<$ $\epsilon$ $\leq$ $1$, our data structure can be built
in $o(q^{3/2})$ $+$ $O((n\log n)/\epsilon)$ time and
$O(n\log n+n/\epsilon)$ space, where $q$, $1$ $\leq$ $q$ $\leq$ $n$,
is the minimum number of faces needed to cover all the vertices of
a certain planar graph we use. This data structure enables us to
in $o(q^{3/2})$ $+$ $O((n\log n)/\epsilon)$ time and
$O(n\log n+n/\epsilon)$ space, where $q$, $1$ $\leq$ $q$ $\leq$ $n$,
is the minimum number of faces needed to cover all the vertices of
a certain planar graph we use. This data structure enables us to
report the length of a short path between two arbitrary query points
in $O((\log n)/\epsilon+1/\epsilon^2)$ time and the actual path
in $O((\log n)/\epsilon+1/\epsilon^2+L)$ time, where $L$ is the
number of edges of the output path. The constant approximation
factor, $6+\epsilon$, for the short paths that we compute is quite
small. Our techniques are parallelizable and can also be used
to improve the previously best known results on several related
in $O((\log n)/\epsilon+1/\epsilon^2+L)$ time, where $L$ is the
number of edges of the output path. The constant approximation
factor, $6+\epsilon$, for the short paths that we compute is quite
small. Our techniques are parallelizable and can also be used
to improve the previously best known results on several related
graphic and geometric problems."
}
@ -36877,7 +36887,7 @@ avoids overlap. This is useful in cartography."
This paper shows that the $i$-level of an arrangement of hyperplanes in
$E^d$ has at most ${{i+d-1}\choose {d-1}}$ local minima.
This bound follows from ideas previously used to prove bounds on $(\leq k)$-sets.
Using linear programming duality,
Using linear programming duality,
the Upper Bound Theorem is obtained as a corollary,
giving yet another proof of this
celebrated bound on the number of vertices of a simple polytope
@ -42595,10 +42605,10 @@ Contains C code."
, succeeds = "dp-olacd-91"
, update = "98.11 bibrelex, 98.07 bibrelex, 95.09 mitchell"
, annote = "In this paper you will find the definition of a Constrained
Delaunay Triangulation, some theorems and the pseudocode of
the algorithms to program it. On-Line means that you can
insert points and required edges in any order. With this
algorithm you can update an old CDT without retriangulating
Delaunay Triangulation, some theorems and the pseudocode of
the algorithms to program it. On-Line means that you can
insert points and required edges in any order. With this
algorithm you can update an old CDT without retriangulating
the old data."
}
@ -44319,7 +44329,7 @@ Contains C code."
@techreport{d-vrtdd-09
, author = "Olivier Devillers"
, title = "Vertex Removal in Two Dimensional {Delaunay} Triangulation:
, title = "Vertex Removal in Two Dimensional {Delaunay} Triangulation:
Asymptotic Complexity is Pointless"
, thanks = "triangles"
, institution = "INRIA"
@ -53238,17 +53248,17 @@ library."
, update = "98.11 bibrelex, 98.03 mitchell, 97.11 bibrelex, 97.03 rote"
, abstract = "We call a line $l$ a separator for a set $S$ of objects in
the plane if $l$ avoids all the objects and
partitions $S$ into two nonempty subsets, one consisting
partitions $S$ into two nonempty subsets, one consisting
of objects lying above $l$ and the
other of objects lying below $l$. We present an
other of objects lying below $l$. We present an
$O(n log n)$-time algorithm for
finding a separator line for a set of $n$ segments, provided
the ratio between the diameter of the set of segments and
finding a separator line for a set of $n$ segments, provided
the ratio between the diameter of the set of segments and
the length of the smallest segment is bounded.
No subquadratic algorithms are known for the general case.
No subquadratic algorithms are known for the general case.
Our algorithm is based on the recent results of
Matousek, Pach, Sharir, Sifrony, and Welzl (1994) concerning
the union of fat triangles, but we also include an analysis
Matousek, Pach, Sharir, Sifrony, and Welzl (1994) concerning
the union of fat triangles, but we also include an analysis
which improves the bounds obtained by Matousek et al."
}
@ -57337,18 +57347,18 @@ a simple polygon with vertex set P. We prove that it is NP-complete
to find a minimum weight polygon or a maximum weight polygon for a
given vertex set, resulting in a proof of NP-completeness for the
corresponding area optimization problems. This answers a generalization
of a question stated by Suri in 1989.
of a question stated by Suri in 1989.
We give evidence that it is unlikely that the minimization
problem can be approximated.
problem can be approximated.
For the maximiation problem, we show that we can find in optimal
time O(n log n) a polygon
of more than half the area AR(conv(P)) of the convex hull conv(P)
of P, yielding a fast 1/2 approximation method for the problem.
We demonstrate that it is NP-complete to decide whether there
is a simple polygon of at least (2/3+eps)(AR(conv(P)).
is a simple polygon of at least (2/3+eps)(AR(conv(P)).
We also sketch an NP-hardness proof for the problem of finding a minimum-link
searating polygon for two finite point sets in the plane.
Finally, we turn to higher dimensions, where we prove that for
Finally, we turn to higher dimensions, where we prove that for
0<k<d+1, 1<d, it is
NP-hard to minimize the volume of the k-dimensional faces of a
d-dimensional simple nondegenerate polyhedron with a given vertex
@ -57456,7 +57466,7 @@ set, answering a generalization of a question stated by O'Rourke in 1980."
, update = "98.03 mitchell"
, abstract = "For a given set $A\subseteq\ (-\pi;+\pi]$ of angles, the problem ``Angle-Restricted Tour'' (ART) is to decide whether a set $P$ of $n$ points in the
Euclidean plane allows a closed directed tour consisting of straight line segments, such that all angles between consecutive line segments are from the
set $A$.
set $A$.
\par
We present a variety of combinatorial and algorithmic results on this problem. In particular, we show that any finite set of at least 5 points allows a
``pseudoconvex'' tour, where all angles are nonnegative."
@ -93025,7 +93035,7 @@ and implement some of them."
, nickname = "IWCIA '01"
, year = 2001
, pages = "139--151"
, comments = "Appears also in Electronic Notes in Theoretical
, comments = "Appears also in Electronic Notes in Theoretical
Computer Science, Volume 46,
www.elsevier.nl/locate/entcs/volume46.html"
, update = "01.11 smid"
@ -97136,7 +97146,7 @@ exclusive read exclusive write parallel random-access machine (EREW
PRAM). Let $P$ be a trapezoided rectilinear simple polygon with $n$
vertices. In $O(\log n)$ time using $O(n/{\log n})$ processors we can
optimally compute
\begin{enumerate}
\begin{enumerate}
\item minimum rectilinear link paths, or shortest paths in the $L_1$
metric from any point in $P$ to all vertices of $P$,
\item minimum rectilinear link paths from any segment inside $P$ to
@ -105727,22 +105737,22 @@ and robustness is significantly improved; the implementation has no numerical
tolerances and does not exhibit cycling problems. The algorithm also handles
penetrating polyhedra, making it useful for nonconvex polyhedral collision
detection. This paper presents the theoretical principles of V-clip, and gives
a pseudocode description of the algorithm. It also documents various tests
that compare V-clip, Lin-Canny, and the Enhanced Gilbert-Johnson-Keerthi
algorithm, a simplex-based algorithm that is widely used for the same
application. The results show V-clip to be a strong contender in this field,
comparing favorably with the other algorithms in most of the tests, in terms
a pseudocode description of the algorithm. It also documents various tests
that compare V-clip, Lin-Canny, and the Enhanced Gilbert-Johnson-Keerthi
algorithm, a simplex-based algorithm that is widely used for the same
application. The results show V-clip to be a strong contender in this field,
comparing favorably with the other algorithms in most of the tests, in terms
of both performance and robustness.
\par
From the V-Clip Collision Detection WWW page:
\par
V-Clip is a low-level collision detection algorithm. The basic operation
provided to the application is that of performing a collision check between
two objects. The decisions of when to perform the checks between which object
pairs are left to the application. In particular, the V-Clip library does not
include facilities for higher level collision check culling, using bounding
boxes or spheres, for example. If this is required, consider writing one
yourself, or consider using a complete collision detection package such as
provided to the application is that of performing a collision check between
two objects. The decisions of when to perform the checks between which object
pairs are left to the application. In particular, the V-Clip library does not
include facilities for higher level collision check culling, using bounding
boxes or spheres, for example. If this is required, consider writing one
yourself, or consider using a complete collision detection package such as
I-Collide or V-Collide.
\par
V-Clip is designed for objects that are bounded by closed surfaces, and not
@ -106538,9 +106548,9 @@ problems in computational geometry is presented."
, cites = "rwzw-cksck-91, rw-cckgp-92, eorw-fmakg-92"
, update = "98.03 mitchell, 97.11 bibrelex, 97.03 rote"
, abstract = "Given a set $S$ of $n$ points in the plane, we compute in time
$O(n^3)$ the total number of convex polygons whose vertices are
a subset of $S$. We give an $O(m n^3)$ algorithm for computing
the number of convex $k$-gons with vertices in $S$, for all
$O(n^3)$ the total number of convex polygons whose vertices are
a subset of $S$. We give an $O(m n^3)$ algorithm for computing
the number of convex $k$-gons with vertices in $S$, for all
values $k=3,\ldots,m$."
}
@ -113817,7 +113827,7 @@ small) triangulation of a convex polyhedron is NP-complete. Their 3SAT-reduction
, update = "98.07 bibrelex, 97.07 orourke"
, annote = "A new polygon visibility graph is introduced. It is
demonstrated that it encodes more geometric
information about the polygon than does the vertex
information about the polygon than does the vertex
visibility graph. For example, it determines the
shortest path tree for each vertex."
}
@ -113845,7 +113855,7 @@ small) triangulation of a convex polyhedron is NP-complete. Their 3SAT-reduction
, annote = "Vertex-edge visibility graphs of pseudo-polygons
are characterized combinatorially, showing that the
decision problem for them is in P. This also establishes
that the decision problem for vertex-vertex
that the decision problem for vertex-vertex
visibility graphs of pseudo-polygons is in NP."
}
@ -124672,7 +124682,7 @@ Previous title: On-Line Navigation Through Regions of Variable
points and we are able to report an approximation of the width
of this dynamic point set. Our data structure takes linear space
and allows for reporting the approximation with relative
accuracy $\epsilon$ in $O(sqrt(1/\epsilon)log n)$ time; and the
accuracy $\epsilon$ in $O(sqrt(1/\epsilon)log n)$ time; and the
update time is $O(\log^2 n)$. The method uses the tentative
prune-and-search strategy of Kirkpatrick and Snoeyink."
}
@ -129982,12 +129992,12 @@ Contains C code."
, update = "98.07 bibrelex+rote, 98.03 mitchell, 97.03 rote"
, abstract = "We consider the problem of approximating a convex figure
in the plane by a pair $(r,R)$ of homothetic (i. e., similar and
parallel) rectangles with $r$ contained in $C$ and $R$
containing $C$. We show the existence of such pairs where the
sides of the outer rectangle have length at most double the
length of the inner rectangle, thereby solving a problem posed
parallel) rectangles with $r$ contained in $C$ and $R$
containing $C$. We show the existence of such pairs where the
sides of the outer rectangle have length at most double the
length of the inner rectangle, thereby solving a problem posed
by P\'{o}lya and Szeg\H{o}.
If the $n$ vertices of a convex polygon $C$ are given as a
If the $n$ vertices of a convex polygon $C$ are given as a
sorted array, such an approximating pair of rectangles can be
computed in time $O(log^2 n)$."
}
@ -130870,7 +130880,7 @@ Contains C code."
, year = 1995
, pages = "1976--1982"
, comments = "also contains an interesting algorithm for the Fortune-Wilfong
problem, to find a minimal-length curvature-constrained
problem, to find a minimal-length curvature-constrained
path in a polygonal environment."
, update = "96.05 mitchell"
}
@ -151783,13 +151793,13 @@ amplification and suppression of local contrast. Contains C code."
}
@article{hh-esplp-08
, author = "I. Haran and D. Halperin"
, title = "An experimental study of point location in planar arrangements in CGAL"
, journal = "ACM Journal of Experimental Algorithmics"
, volume = "13"
, year = 2008
, pages = ""
}
, author = "I. Haran and D. Halperin"
, title = "An experimental study of point location in planar arrangements in CGAL"
, journal = "ACM Journal of Experimental Algorithmics"
, volume = "13"
, year = 2008
, pages = ""
}
@article{hkh-iiplgtds-12
, author = {{Hemmer}, M. and {Kleinbort}, M. and {Halperin}, D.}
@ -151867,7 +151877,7 @@ pages = {179--189}
acmid = {939190},
publisher = {IEEE Computer Society},
address = {Washington, DC, USA},
}
}
@inproceedings{Arthur2007Kmeans,
author = {Arthur, David and Vassilvitskii, Sergei},
@ -151883,7 +151893,7 @@ pages = {179--189}
acmid = {1283494},
publisher = {Society for Industrial and Applied Mathematics},
address = {Philadelphia, PA, USA},
}
}
@book{botsch2010polygon,
title={Polygon mesh processing},
@ -151922,5 +151932,4 @@ pages = {179--189}
publisher = {ACM},
address = {New York, NY, USA},
keywords = {Design and analysis of algorithms, computational geometry, shortest path problems},
}
}

View File

@ -18,11 +18,11 @@ used in many applications, such as motion planning and computer-aided
design and manufacturing. This package contains functions that compute
the planar Minkowski sums of two polygons. (Here, \f$ A\f$ and \f$ B\f$
are two closed polygons in \f$ \mathbb{R}^2\f$, which may have holes; see
Chapter \ref Chapter_2D_Regularized_Boolean_Set-Operations "2D
Regularized Boolean Set-Operations" for the precise definition of valid
Chapter \ref Chapter_2D_Regularized_Boolean_Set-Operations
"2D Regularized Boolean Set-Operations" for the precise definition of valid
polygons), and the planar Minkowski sum of a simple polygon and a
disc---an operation also referred to as <I>offsetting</I> or <I>dilating</I>
a polygon). \cgalFootnote{The family of valid types of summands is slightly
a polygon.\cgalFootnote{The family of valid types of summands is slightly
broader for certain operations, e.g., a degenerate polygon consisting of
line segments is a valid operand for the approximate-offsetting operation.}
This package, like the \ref Chapter_2D_Regularized_Boolean_Set-Operations
@ -32,7 +32,7 @@ by the \ref chapterArrangement_on_surface_2 "2D Arrangements" package.
The two packages are integrated well to
allow mixed operations. For example, it is possible to apply Boolean set
operations on objects that are the result of Minkowski sum
computations. \cgalFootnote{The operands of the Minkowski sum operations
computations.\cgalFootnote{The operands of the Minkowski sum operations
supported by this package must be (linear) polygons, as opposed to the
operands of the Boolean set operations supported by the
\ref Chapter_2D_Regularized_Boolean_Set-Operations
@ -51,11 +51,11 @@ edges ordered according to the angle they form with the \f$ x\f$-axis. As the
two input polygons are convex, their edges are already sorted by the angle
they form with the \f$ x\f$-axis; see the figure above.
The Minkowski sum can therefore be computed using an operation similar to the
merge step of the merge-sort algorithm \cgalFootnote{See, for example,
merge step of the merge-sort algorithm\cgalFootnote{See, for example,
<a href="http://en.wikipedia.org/wiki/Merge_sort">
http://en.wikipedia.org/wiki/Merge_sort</a>.} in \f$ O(m + n)\f$ time,
starting from two bottommost vertices in \f$ P\f$ and in \f$ Q\f$ and merging
the ordered list of edges.
starting from the two bottommost vertices in \f$ P\f$ and in \f$ Q\f$ and
merging the ordered list of edges.
\cgalFigureBegin{mink_figonecyc,ms_convex_polygon.png,ms_concave_polygon.png,ms_convolution.png}
The convolution of a convex polygon and a non-convex polygon. The convolution
@ -95,11 +95,11 @@ positive orientations (i.e., their boundaries wind in a
counterclockwise order around their interiors). The
<I>convolution</I> of these two polygons \cgalCite{grs-kfcg-83},
denoted \f$ P * Q\f$, is a collection of line segments of the form
\f$ [p_i + q_j, p_{i+1} + q_j]\f$, \cgalFootnote{Throughout this
\f$ [p_i + q_j, p_{i+1} + q_j]\f$,\cgalFootnote{Throughout this
chapter, we increment or decrement an index of a vertex modulo the
size of the polygon.} where the vector \f$ {\mathbf{p_i p_{i+1}}}\f$
lies between \f$ {\mathbf{q_{j-1} q_j}}\f$ and
\f$ {\mathbf{q_j q_{j+1}}}\f$, \cgalFootnote{We say that a vector
\f$ {\mathbf{q_j q_{j+1}}}\f$,\cgalFootnote{We say that a vector
\f$ {\mathbf v}\f$ lies between two vectors \f$ {\mathbf u}\f$ and
\f$ {\mathbf w}\f$ if we reach \f$ {\mathbf v}\f$ strictly before
reaching \f$ {\mathbf w}\f$ if we move all three vectors to the
@ -114,7 +114,7 @@ The segments of the convolution form a number of closed (not
necessarily simple) polygonal curves called <I>convolution cycles</I>.
The Minkowski sum \f$ P \oplus Q\f$ is the set of points
having a non-zero winding number with respect to the cycles of
\f$ P * Q\f$. \cgalFootnote{Informally speaking, the winding number
\f$ P * Q\f$.\cgalFootnote{Informally speaking, the winding number
of a point \f$ p \in\mathbb{R}^2\f$ with respect to some planar curve
\f$ \gamma\f$ is an integer number counting how many times does
\f$ \gamma\f$ wind in a counterclockwise direction around \f$ p\f$.}
@ -157,14 +157,29 @@ the sub-sums \f$ S_{ij}\f$ when using the decomposition approach. As
both approaches construct the arrangement of these segments and
extract the sum from this arrangement, computing Minkowski sum using
the convolution approach usually generates a smaller intermediate
arrangement, hence it is faster and consumes less space. In most cases,
arrangement; hence it is faster and consumes less space. In most cases,
the reduced convolution method is faster than the full convolution
method, as the respective induced arrangement is usually much smaller.
However, in degenerate cases with many holes in the Minkowski sum, the
full convolution method can be preferable, as it avoids costly
intersection tests.
\subsection mink_ssecsum_conv Computing Minkowski Sum using Convolutions
\subsection mink_ssec_hole_filter Filtering Out Holes
If a hole in one polygon is relatively small compared to the other
polygon, the hole is irrelevant for the computation of
\f$P\oplus Q \f$ \cgalCite{bfhhm-epsph-15}; It implies that the hole
can be removed (that is, filled up) before the main computation starts.
Theoretically, we can always fill up all the holes of at least one
polygon, transforming it into a simple polygon, and still obtain
exactly the same Minkowski sum. Practically, we remove all holesin one
polygon whose bounding boxes are, in \f$x \f$- or \f$y \f$-direction,
smaller than, or as large as, the bounding box of the other polygon.
Obliterating holes in the input summands speeds up the computation of
Minkowski sums, regardless of the approach used to compute the
Minkowski sum.
\subsection mink_ssec_conv Computing Minkowski Sum using Convolutions
The function template \link minkowski_sum_2()
`minkowski_sum_2(P, Q)`\endlink accepts two polygons
@ -182,7 +197,8 @@ the function \link minkowski_sum_full_convolution_2()
the \link Polygon_2 `Polygon_2`\endlink class template. The types of
operands accepted by the function \link
minkowski_sum_reduced_convolution_2()
`minkowski_sum_reduced_convolution_2(P, Q)`\endlink
`minkowski_sum_reduced_convolution_2(P, Q)`\endlink (and by the
function \link minkowski_sum_2() `minkowski_sum_2(P, Q)`\endlink)
are instances of either the \link Polygon_2 `Polygon_2`\endlink or
\link Polygon_with_holes_2 `Polygon_with_holes_2`\endlink class templates.
Even when the input polygons are restricted to be simple polygons, they
@ -229,7 +245,7 @@ in both summands is large, the decomposition approach runs faster. In
the following we describe how to employ the decomposition-based
Minkowski sum procedure.
\subsection mink_ssecdecomp Decomposition Strategies
\subsection mink_ssec_decomp_strategies Decomposition Strategies
In order to compute Minkowski sums of two polygon \f$ P \f$ and
\f$ Q \f$ using the decomposition method, issue the call
@ -242,7 +258,7 @@ of a type that models the concept
`PolygonWithHolesConvexDecomposition_2`, which refines the concept
`PolygonConvexDecomposition_2`. The same holds for \f$Q \f$.
The two concepts `PolygonConvexDecomposition_2` and
`PolygonWithHolesConvexDecomposition` refine a `Functor` concept
`PolygonWithHolesConvexDecomposition_2` refine a `Functor` concept
variant. Namely, they both require the provision of a function
operator (`operator()`). The function operator of the model of the
concept `PolygonConvexDecomposition_2` accepts a planar simple
@ -251,14 +267,25 @@ polygon, while the function operator of the model of the concept
with holes. Both return a range of convex polygons that represents
the convex decomposition of the input polygon. If the decomposition
strategy that decomposes \f$P \f$ is the same as the strategy that
decompose \f$Q \f$, you can omit the forth argument, and
issue the call `minkowski_sum_2(P, Q, decomp)`.
decomposes \f$Q \f$, you can omit the forth argument, and
issue the call `minkowski_sum_2(P, Q, decomp)`, where `decomp`
is an object that represents the common strategy.
The class template `Polygon_nop_decomposition_2`, which models the
concept `PolygonConvexDecomposition_2`, is a trivial convex
decomposition strategy referred to as the <I>nop<I/> strategy; it
merely passes the input polygon to the next stage intact; use it in
cases you know that the corresponding input polygon is convex to
start with. If both \f$P \f$ and \f$Q \f$ are known to be convex,
you can issue the call `minkowski_sum_2(P, Q, nop)`, where `nop`
is an object that represents the nop strategy.
The Minkowski-sum package includes four models of the concept
`PolygonConvexDecomposition_2` and two models of the refined concept
`PolygonConvexDecomposition_2` (besides the trivial model
`Polygon_nop_decomposition_2`) and two models of the refined concept
`PolygonWithHolesConvexDecomposition_2` as described below. The first
three are class templates that wrap the decomposition functions included
in the \ref Chapter_2D_Polygon "Planar Polygon Partitioning" package.
three are class templates that wrap the corresponding decomposition
functions included in the
\ref Chapter_2D_Polygon "Planar Polygon Partitioning" package.
<UL>
<LI>The `Optimal_convex_decomposition_2<Kernel>` class template uses
@ -310,10 +337,7 @@ vertex and having rational-coordinate endpoints on both sides.
The following are two models of the refined concept
`PolygonWithHolesConvexDecomposition_2`. An instance of any one these
two types can be used to decompose a polygon with holes. You can pass
the instance as the third argument to call
`minkowski_sum_2(P, Q, decomp)` to compute the Minkowski sum of two
polygons with holes, \f$P \f$ and \f$Q \f$.
two types can be used to decompose a polygon with holes.
<UL>
<LI>The `Polygon_vertical_decomposition_2<Kernel>` class template
uses vertical decomposition to decompose the underlying arrangement;
@ -332,6 +356,29 @@ angle-bisector decomposition strategy.
\cgalExample{Minkowski_sum_2/sum_by_decomposition.cpp}
\subsection mink_ssec_optimal_decomp Optimal Decomposition
Decomposition methods that handle polygons with holes are typically
more costly than decomposition methods that handle only simple
polygons. The hole filtration (see \ref mink_ssec_hole_filter) is
applied before the actual construction starts (be it convolution
based or decomposition based). The filteration may result with a
polygon that does not have holes, or even a convex polygon, but this
is unkown at the time of the call. To this end, we introduce the
overloaded function template
`minkowski_sum_by_decomposition_2(P, Q, no_holes_decomp, with_holes_decomp)`,
where `no_holes_decomp` and `with_holes_decomp` are objects that model
the concepts `PolygonConvexDecomposition_2` and
`PolygonWithHolesConvexDecomposition_2`, respectively. If after the
application of the hole filtration \f$P\f$ remains a polygon with holes,
then the strategy represented by the object `with_holes_decomp` is
applied to it. If, however, \f$P\f$ turns into a polygon without holes,
then the strategy represented by the object `no_holes_decomp` is applied
to it, unless the result is a convex polygon, in which case the nop
strategy is applied. If \f$P\f$ is a polygon without holes to start with,
then only convexity is checked. (Checking whether the result is convex
inccurs a small overhead though.) The same holds for \f$Q\f$.
\section mink_secoffset Offsetting a Polygon
The operation of computing the Minkowski sum \f$ P \oplus B_r\f$ of a
@ -388,7 +435,7 @@ sub-polygon, and finally calculating the union of these offsets
sub-polygons; see \cgalFigureRef{mink_figpgn_offset} (b). However, as
with the case of the Minkowski sum of a pair of polygons, it is also more
efficient to compute the <I>convolution cycle</I> of the polygon and the
disc \f$ B_r\f$, \cgalFootnote{As the disc is convex, it is guaranteed
disc \f$ B_r\f$,\cgalFootnote{As the disc is convex, it is guaranteed
that the convolution curve comprises a single cycle.} which can be
constructed by applying the process described in the previous
paragraph for convex polygons: The only difference is that a circular arc
@ -399,7 +446,7 @@ the last step consists of computing the winding numbers of the faces
of the arrangement induced by the convolution cycle and discarding the
faces with zero winding numbers.
\subsection mink_ssecapprox_offset Approximating the Offset with a Guaranteed Error Bound
\subsection mink_ssec_approx_offset Approximating the Offset with a Guaranteed Error Bound
Let \f$ P \f$ be a counterclockwise-oriented simple polygon all
vertices of which \f$ p_0, \ldots, p_{n-1} \f$ have rational coordinates,
@ -429,7 +476,7 @@ is supported by the line \f$ Ax + By + C' = 0 \f$, where
rational number. Therefore, the line segments that compose the offset
boundaries cannot be represented as segments of lines with rational
coefficients.
In Section \ref mink_ssecexact_offset we use the line-pair representation
In Section \ref mink_ssec_exact_offset we use the line-pair representation
to construct the offset polygonin an exact manner using the traits class
for conic arcs.
</UL>
@ -504,7 +551,7 @@ the header file `bops_circular.h`, which defines the polygon types.
\cgalExample{Minkowski_sum_2/approx_offset.cpp}
\subsection mink_ssecexact_offset Computing the Exact Offset
\subsection mink_ssec_exact_offset Computing the Exact Offset
As mentioned in the previous section, it is possible to represent
offset polygons in an exact manner if the edges of the polygons are
@ -548,7 +595,7 @@ handles polygons with holes, such as the
`Polygon_vertical_decomposition_2<Kernel>` class template.
\cgalAdvancedEnd
\subsection mink_ssecinner_offset Computing Inner Offsets
\subsection mink_ssec_inner_offset Computing Inner Offsets
An operation closely related to the (outer) offset computation, is
computing the <I>inner offset</I> of a polygon, or <I>insetting</I> it