Qhull
The ideas behind quick-hull can be
extended to three dimensions and higher. Several people have written
programs to do this. One very successful program is called
qhull. Other very good programs can be found at the Geometry
Center's collection of geometric software. Click
here
to visit it.
Partitioning in quick-hull
To extend quick-hull to higher dimensions, we need to look more
closely at the idea of partitioning. It occurs in two places:
- At the beginning, when points are grouped into two sets: those above
the chord, and those below it.
- At each iteration, when points are partitioned into three sets:
those inside the new triangle, and those outside the two edges.
Partitioning in Qhull
Qhull also partitions points. After an initial hull is chosen (in
three dimensions, it is a tetrahedron), the points are partitioned
into two classes:
- Those inside the hull. These points cannot contribute to the hull,
so they are ignored in later processing.
- Those outside. These points in turn are further partitioned,
and each one is assigned to one of the facets of the hull.
This partitioning is arbitrary, except that points must be
above the facet with which they are associated.
Iteration
The algorithm then iterates. At each iteration, we do the following:
- Choose a facet arbitrarily.
- Examine the points associated with that facet, and pick the farthest
one as a new vertex.
- Extend the hull out to the new vertex. We do this
as follows:
- Find the facets which are visible from the new vertex, and
gather them into a set.
- Find the boundary of the visible set. This is the
horizon, the boundary between the parts of the
hull that are visible to the new vertex, and those that
are invisible to it.
- From each part of the horizon (in three dimensions, from each
edge of the horizon), extend the hull out to the new vertex.
- Remove the visible set.
- The facet chosen in step 1 is now gone, and so are the facets on the
visible set. The points that were associated with these facets
must be:
- discarded (if they are now inside the new hull), or
- re-assigned to other facets.
Animation
All of this is hard to follow without a picture. Here's an
animation of qhull. Click here for instructions.
Unfortunately, it does not show the associations
between facets and points (I was a bit lazy), but it does show how, at
each iteration, the visible facets are removed, and the new pyramid of
facets is added out to the new vertex.
Use the mouse to rotate the scene in case the interesting stuff is
happening on the far side of the hull.
Alejo Hausner, CS Department, Princeton University
Last modified: Thu Oct 2 12:50:03 1997