Handouts:
2/18/08: Geometric primitives; triangulations of special simple polygons

Detailed list of primitives used in Chapter 1. We go into detail on each and give complexities, etc. Some review of basic C syntax.
Notes on special classes of simple polygons:
  • (a) Convex (trivial to triangulate with a "fan triangulation" in O(n) time);
  • (b) Star-shaped: They can be recognized in O(n) time (in fact, in O(n) time, one can construct the "kernel" of a simple polygon, which is the (possibly empty) convex polygon of possible locations for a single guard to see all of the polygon). It is easy to get an O(n) time algorithm for a "Steiner triangulation" of a star-shaped polygon, in which we create a Steiner point anywhere in the kernel, and join it to each vertex, to create a Steiner fan triangulation. This is not, however, a "triangulation" as we define it. There are, however, O(n)-time relatively simple algorithms to triangulate star-shaped polygons. (I do not give details.)
  • (c) Monotone polygons, chains: I defined what it means to be d-monotone or strictly d-monotone for a chain and for a polygon. Examples. Note that a polygon is convex if and only if it is monotone with respect to ALL directions d. Monotone polygons will have relatively simple O(n)-time triangulations. (We will focus first on a special case of monotone polygons: monotone mountains.)

    Preview of triangulation algorithms: Bottom line -- any simple polygon with n vertices can be triangulated in time O(n) using an algorithm by Bernard Chazelle (hopelessly complex, huge constant in big-Oh, and nobody would want to implement it!). We present instead an O(n log n) algorithm based on decomposing a polygon (using a "sweep" algorithm) into monotone mountains, and then using a simple algorithm on each mountain.