Computational geometry studies algorithms for geometric problems. In Computer Science, we are interested primarily and discrete and combinatorial geometry (as opposed to continuous geometry). Typically, computational geometry algorithms involve finite sets of points, line segments or polygons. For example, we might be given the location of post-offices on a map, and want to find the closest pair of post-offices; Or we might want to find a triangulation of a set of surface samples that maximizes the minimum angle of a triangle ---- this type of meshing is often used in solid modeling, where small angles cause numerical instability; or, we might be given two sets of segments, and want to find their intersections. These are some simple examples of geometric problems. There are many fields in Computer Science that encounter geometric problems, such as computer graphics, computer vision and image processing, robotics, and GIS. This class will cover the core computational geometry topics: convex hulls, line segment intersection, guarding and art gallery, segment intersection, point location, Voronoi diagrams, Delaunay triangulations, and geometric data structures.

**Prerequisites**: Data Structures (cs2100) and
Algorithms (cs2200) (or permission of instructor). In other words:

- knowledge of basic analysis techniques: asymptotic notation, growth, solving recurrences.
- knowledge of basic algorithm design techniques: divide-and-conquer, greedy.
- knowledge of basic algorithms and data structures: searching, sorting, binary search trees, priority queues.

**Instructor**: Laura Toma
*Office:* 219 Searles

**Office hours:** Wed 1-4pm. For quick questions, you
can drop by any time you see the door open. Or, send me an email to
setup a (different) time; I'll do my best to accomodate you, but keep
in mind my schedule can get pretty full.

**Class mailing list:** csci3250 at bowdoin.edu. Use
it to ask questions. Since somebody else in the class might have the
same question, using a mailing list is better for everyone than
emailing me.

**Class webpage:** http://www.bowdoin.edu/~ltoma/teaching/cs3250/spring14/"

**Topics:**

- Introduction: finding the closest pair of points.
- Convex hulls in 2D.
- Line segment intersection.
- Polygon triangulation -- guarding and art gallery.
- Polygon partitioning.
- Linear programming.
- Orthogonal range searching.
- Point location.
- Voronoi diagrams
- Arrangements and duality.
- Delaunay triangulations.
- Geometric data structures: interval trees, priority search trees, segments trees.
- Convex hulls in 3D.
- Binary space partitions.
- Motion planning
- Quadtrees.
- Visibility graphs.

**Textbook:**

- Computational geometry in C. J. O'Rourke.
- Computational geometry: algorithms and applications. Mark de Berg, Otfried Cheong, Mark van Kreveld, Mark Overmars.

**Grading policy:** The grade will be based on:

- homework assignments
- programming projects
- midterm exam
- class participation