The following material is provided as-is for educational and research purposes. The notes will have errors and the code will have bugs. If you find a particularly egregious example of either I would appreciate hearing from you.

**Elementary smooth and discrete differential notes**

Some notes from a series of seminars I gave while at Harvard in 2014.

Differential geometry of plane curves

Smooth differential geometry of surfaces

Discrete differential geometry of surfaces

Worked example: elastic ribbon in the plane, with rest curvature and internal pressure

Some notes on robustly calculating bending angles and their derivatives

Laplace-Beltrami: The Swiss Army Knife of Geometry Processing
Keenan Crane, Justin Solomon, and I have given a tutorial on the Laplace-Beltrami operator and its discretization at several meetings of the Symposium on Geometry Processing (SGP). These are the slides from the latest and best incarnation, at SGP 2014 in Cardiff. |

**Asynchronous Contact Mechanics Code**

The canonical source code for the Speculative Asynchronous Contact Mechanics project is maintained by Samantha Ainsley; please email her for a copy.

The Git repository above contains a minimal, light-weight implementation of the core ACM algorithm: the parallelization has been stripped out for maximum portability, and there is no integration of material forces (only contact force, e.g. the code acts like a velocity filter.)

I needed this code for a recent research project, and perhaps it is of use to others as well. Without replacing the parallelization

*this code will be slow*, but it is still the most robust triangle mesh self-contact code available if you need a guarantee of non-penetration.

**Continuous-Time Interference Detection Code**

Independent of the ACM implementation, this repository also contains code for doing continuous-time interference detection for triangle meshes, i.e. given two triangles moving along a linear trajectory, when, if ever, will they come within a given distance of each other? This code formulates the problems as a conjunction of degree-six polynomial inequalities and solves them using the Jenkins-Traub numerical root-finding algorithm.

*You may use anything on this page to which I own the rights under your choice of CC-by-SA 2.0 or the GPL 3.0.*