A kinetic convex hull data structure is a
kinetic data structure
A kinetic data structure is a data structure used to track an attribute of a geometric system that is moving continuously.
For example, a kinetic convex hull data structure maintains the convex hull of a group of n moving points. The developme ...
that maintains the
convex hull of a set of continuously moving points.
It should be distinguished from
dynamic convex hull data structures, which handle points undergoing discrete changes such as insertions or deletions of points rather than continuous motion.
The 2D case
The best known data structure for the 2-dimensional kinetic convex hull problem is by Basch,
Guibas, and Hershberger. This data structure is
responsive,
efficient,
compact
Compact as used in politics may refer broadly to a pact or treaty; in more specific cases it may refer to:
* Interstate compact
* Blood compact, an ancient ritual of the Philippines
* Compact government, a type of colonial rule utilized in British ...
and
local
Local may refer to:
Geography and transportation
* Local (train), a train serving local traffic demand
* Local, Missouri, a community in the United States
* Local government, a form of public administration, usually the lowest tier of administrat ...
.
The data structure
The
dual of a convex hull of a set of points is the
upper and lower envelopes of the dual set of lines. Therefore, maintaining the upper and lower envelopes of a set of moving lines is equivalent to maintaining the convex hull of a set of moving points. Computing upper and lower envelopes are equivalent problems, so computing the upper envelope of a set of lines is equivalent to computing the convex hull of a set of moving points.
The upper envelope of a set of static lines can be computed using a
divide and conquer algorithm
In computer science
Computer science is the study of computation, automation, and information. Computer science spans theoretical disciplines (such as algorithms, theory of computation, information theory, and automation) to practical ...
which partitions the lines into two sets of equal size, calls itself recursively on the two sets to find their upper envelopes, and then merges the two resulting upper envelopes. The merge step is performed using a
vertical line sweep. Call the first set of points blue and the second set of points red.
The standard line sweep algorithm for merging upper envelopes sweeps though all of vertices of the red and blue upper envelopes, from left to right. The most recently encountered red and blue points are maintained as the line sweeps. When a point is encountered, the algorithm checks if the point is above or below the segment following the last encountered point of the opposite color. If it is above, that point is added to the merged upper envelope. If it is of a different color than the last added point, the red and blue envelopes have crossed, so the intersection point is also added to the merged upper envelope.
The sequence of edges and vertices resulting from this algorithm is only dependent on the ordering of points, and the results of the line-point comparisons. Thus, the result can be certified with the following certificates:
*x-certificates (
) are used to certify the order the vertices of the red and blue envelopes. They are the certificates for a
kinetic sorted list
A kinetic sorted list is a kinetic data structure for maintaining a list of points under motion in sorted order. It is used as a kinetic predecessor data structure, and as a component in more complex kinetic data structures such as kinetic clos ...
on the set of vertices. Since each point involves 2 lines, and the certificate involves 2 points, each certificate involves 4 lines.
*y-certificates (
) are used to certify that a vertex is above or below an edge. The certificates appear for all comparisons that would occur during the algorithm.
As long as all of these certificates hold, the merge steps will be executed identically, so the resulting upper envelope will be the same. A kinetic data structure for upper envelopes can be created by using these certificates to certify the static upper envelope algorithm. However, this scheme is not local, because one line many be involved in many y-certificates if it remains on top or bottom as many points from the other envelope are encountered.
Thus, it is necessary to introduce a s-certificates (
) which certifies that the slope of a line is greater than or less than the slope of another line.
Having the following certificates for all points ab is sufficient to certify the sequence of edges and vertices resulting from a merge, with only O(1) certificates per line:
#