Handouts: Course information sheet
1/26/09: Introduction to the course requirements, prerequisites, etc.
The introductory class on January 26 ( Powerpoint slides are available) gave an overview of what computational geometry is and what types of problems we study in the course. I included some demos, which are applets linked from the slides.

Background: (a). geometry: vectors, dot product, cross product
(b). AMS301 material: counting, recursion, graphs
(c). algorithms: big-Oh notation (O(f(n)), Omega(F(n))), reading code (C,C++,Java) and pseudo-code
Applications discussed briefly:
(1) Point-in-polygon test. Shoot a ray and count the number of crossings; odd implies the point is inside the polygon. O(n) time to do this.
We can do better if we are allowed to preprocess the polygon. Then it will be possible to do point-in-polygon queries in time O(log n), after O(n) preprocessing.
(2) Convex hull of n points in the plane. We will be able to do this in O(n log n) time, which is the best possible (essentially).
(3) Line segment intersection. Find all k intersection points among n line segments. Naive: O(n^2). Ultimately, this has been solved in output-sensitive time O(k + n log n), by Chazelle and Edelsbrunner; we will see a slightly less efficient algorithm in class. If we just care yes or no if there EXISTS an intersection, this can be done in O(n log n) time, as we will see.
(4) Shortest paths for a mobile robot moving among polygonal obstacles.
(5) Triangulation of a simple polygon. Application: graphics (painting a polygon on the screen). Ultimately, this was solved in linear (O(n)) time by Chazelle (1990). We will see an O(n log n) algorithm. In practice, you want to use "FIST", developed here at Stony Brook by Martin Held.