|
The Convex Hull
The Convex Hull of a set of points in the plane is the shape you would
get if you stretched an elastic band around the points, and let it snap
tight. A more formal mathematical definition is as follows.
A set C is convex if for any x and y in C, and for any
l between 0 and 1, the point lx+(1-l)y is also in C.
That is, if x and y are in C, the line segment between x and y is
completely contained in C. So for example, circles, squares and ovals are convex,
but crosses or crescent moons are not. The convex hull of a set of points
is the ßmallest possible" convex hull containing the points. More technically,
it is the intersection of all convex sets containing the points.
An alternative definition, at least if the set of points
P = {p1,p2,...,pn} is finite, is that the convex hull consists of all
points x which may be written
x = l1 p1 + l2 p2 + ... + ln pn,
for some l1,l2,...,ln such that
l1+l+2+...+ln = 1.
The DotPlacer Applet (on this site) allows you to
place a set of points on the screen, and have it draw the convex
hull for you (and many other things).
You can even move the points around, and watch the shape change. Try it!
I used the following algorithm to draw the Convex hull. First of all,
I found the point p1 with the smallest x coordinate. Then, I chose
a vector v1 pointing up the y axis. Then I found the point p2
for which the line p1p2 made the smallest angle with v1, and let
v2 be a vector in the direction of this line. Then, I used p2 and
v2 to find p3 and v3 and so on, finding p4, p5, p6 and
so on until the pk I found is the same as p1. Then, I connect all the
points I found with straight lines.
The algorithm above may not be the most efficient one available for
constructing the convex hull, but it works. The actual source code is also available.
For more information on the convex hull, see this
World of Mathematics
article.
File translated from TEX by TTH, version 2.25.
|