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.

**Physical Simulation Notes**

Course notes for my physical simulation class are publicly available on Overleaf. This is a "live" document---it will update as I make refinements to the course contents and curriculum. I welcome any comments, suggestions, or corrections you might have.

**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. |

**Discrete Shell Code**

This code implements the energies, forces, and energy Hessians for discrete shells, with several options for bending discretization and material model. The energies and derivatives have been thoroughly tested using finite differences (testing code is included in the repository).

The energy code itself requires only the Eigen linear algebra library, although the repository also includes an example static solver showing how to use the library along with a Libigl front-end.

**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.*