Beruflich Dokumente
Kultur Dokumente
S3
S4
S2
S1
PR intersect.
PL
(a)
QR
eq
PL QR
QR PL
eq
ep
ep
PL
Assume that P’s faces have been triangulated and P = P 0 be the initial
polyhedron. Let ‘n’ denote the number of vertices in this graph. Every planar
graph has an independent set that contains a constant fraction of the vertices
formed entirely from vertices of bounded degree. Such an independent set is
computed and is removed along with any incident edges and faces from P.
Then any resulting “holes” in the boundary of P are filled with triangles,
resulting in a convex polyhedron with fewer vertices.
The Algorithm
Briefly...
Let P and Q be two convex polygons whose intersection is a convex polygon.
The algorithm for finding this convex intersection polygon can be described
by these three steps:
In detail...
To compute the convex hull of the two convex polygons, the algorithm uses
the rotating calipers. It works as follows:
Once the pockets have been found, the intersection of the polygons at the
bottom of the pocket needs to be determined. The pockets themselves form
a very special type of polygon: a sail polygon: that is, a polygon composed of
two concave chains sharing a common vertex at one extremity, and
connected by a segment (the mast) at the other end. By a procedure similar
to a special-purpose triangulation for sail polygons, the segments of P and Q
which intersect can be identified in O(k+l), where k and l are the number of
vertices of P and Q which are inside the pocket. The idea is to start the
triangulation from the mast, and as points from P and Q are considered, a
check is made to see that the chain from Q is still on the same side as the
chain from P.
Merging
What remains to be done is to build the resulting polygon. One way of doing
this is to start at one of the vertices given by the above
algorithm, compute the intersection, add that point, and then to continue
adding points by following either P or Q deeper below the pocket until it
comes out of another pocket (i.e. until the vertex to consider for addition
happens to have been the output of the algorithm for another pocket). Then
from that pocket the chain of the other polygon can be followed under the
pocket. This would be done until the pocket the chain comes out of is the
pocket that the merging started with.
All of this assumes that the polygons do intersect. However, there are three
ways in which no polygonal intersection could exist:
For case 2, this is detected if, during the triangulation step, the algorithm
makes a complete loop around one of the polygons. Detecting case 3 is even
easier to detect; in such a case no pockets will be found by the convex hull
algorithm.
Bibilography