# 15-864 Assignment 2: Mesh Smoothing

## Overview

In this short assignment you will get some final practice performing operations on polygon meshes. You may also find these techniques useful for creating meshes for future projects.

## Details

1. Implement an explicit solver for both diffusion- (using the Laplacian operator) and curvature-based smoothing on meshes, as described in [Desbrun et al. 1999]. You may use an explicit forward Euler method to solve the equation (as described in the paper); be cogent of the timestep restriction, however.
2. Provide the ability to change both the lambda value and the number of iterations via either command-line arguments or interactive keystrokes. Document this in your README file.
3. You should already have a viewer capable of displaying polygon meshes from the first project, as well as an .obj reader. Present the results of the smoothing in this viewer. Also, as an intuitive way to aid in debugging, display update values (e.g., scaled Laplacian or curvature) at the vertices. For example, the head at right uses the Matlab Jet colormap to visualize curvature values. The color scheme you use can be anything you want, provided that it is clear where the high/low values are.
4. As a final step, compare the two smoothing approaches (curvature flow and laplacian smoothing) by showing a side-by-side comparison after N iterations for a few values of N (a simple jpeg image is sufficient here). For extra coolness factor, optionally turn in a side-by-side video of the two approaches iterating.
5. At a minimum, your program should work with the Meyer head and sphere meshes. These will demonstrate that you have correctly implemented the scale-dependent umbrella operator. It should also work with the simple roughened sphere example (this is a very simple mesh with well-conditioned triangles, so it should be an excellent one to test your code on). You can also download these meshes packaged up as a ZIP file.
6. As usual, turn in your full source code, plus a README summarizing build instructions, interface details, etc.