CSCI-6962 Advanced Computer Graphics, Fall 2005
Assignment 2: Simplification and Subdivision Surfaces

The goal of this assignment is to try your hand at various mesh processing tasks. A half-edge mesh adjacency data structure is provided, along with a very simple .obj mesh parser. As you modify the triangle mesh, it is critical that the manifold properties of the input surface are maintained, and that the adjacency data structure remains consistent. Throughout this assignment you are asked to consider the efficiency of various mesh operations (is something quadratic, linear, constant, etc.). Since this assignment is rather long, it's ok if you don't always implement the most efficient strategy (which may require additional data structures), but please discuss the tradeoffs in your README.txt file.

This assignment is probably way too long. Start early, and just get the basics working first. Spend a reasonable amount of time coding and write about what you've learned in your README.txt file.

Tasks

Ideas for Extra Credit

Include a short paragraph in your README.txt file describing your extensions.

Basic Code, similar to Assignment 1

Resizable Array & Bag classes, using Templates

The array class is a simple dynamically resizeable array. The bag class is for unordered data. For efficient (constant time) retrieval and removal of elements, the bag class is implemented with a hash table. The "extract" function allows special lookup. See how it's used by the Mesh code to efficiently find pairings between opposite edges.

Half-Edge Adjacency Mesh Library

.obj files

Please read the assignment information again before submitting.