**Instructor:** Keenan Crane (keenanc@andrew)

Office Hours: TBD

**TAs:**

Zoë Marschner (zmarschn@andrew)

Office Hours: TBD

Bernie Riemann (riemann@andrew)

Office Hours: TBD

**Prerequisites**: linear algebra, vector calculus, some programming experience.

This course focuses on three-dimensional geometry processing, while simultaneously providing a first course in traditional differential geometry. Our main goal is to show how fundamental geometric concepts (like curvature) can be understood from complementary computational and mathematical points of view. This dual perspective enriches understanding on both sides, and leads to the development of practical algorithms for working with real-world geometric data. Along the way we will revisit important ideas from calculus and linear algebra, putting a strong emphasis on *intuitive*, *visual* understanding that complements the more traditional formal, symbolic treatment. The course provides essential mathematical background as well as a large array of real-world examples and applications. It also provides a look at recent developments in digital geometry processing and discrete differential geometry. Topics include: curves and surfaces, curvature, connections and parallel transport, exterior algebra, exterior calculus, Stokes’ theorem, simplicial homology, de Rham cohomology, Helmholtz-Hodge decomposition, conformal mapping, geodesics, finite element methods, and numerical linear algebra. Applications include: approximation of curvature, curve and surface smoothing, surface parameterization, vector field design, and computation of geodesic distance.

Course material has been used for semester-long courses at CMU (2016, 2017, 2019, 2020, 2021, 2022, 2023, 2024), Caltech (2011, 2012, 2013, 2014, 2016, 2017), Columbia University (2013), and RWTH Aachen University (2014, 2015, 2016, 2017), as well as special sessions at SIGGRAPH (2013) and SGP (2012, 2013, 2014, 2017).

(A = *assignment*, R = *reading*)

A0 assigned

R1 assigned

*oriented simplicial complex*.

R1 due / R2 assigned

*manifolds*, which are central to differential geometry. Rather than giving a formal definition in the smooth case, we’ll start with a notion of

*discrete manifolds*that capture the most important ideas. These discrete manifolds build on the idea of a

*simplicial complex*, introduced in the previous lecture.

*exterior algebra*. The basic idea is to add a couple new operations to our usual list of vector operations (dot product, cross product, etc.) that make it easy to talk about

*volumes*rather than just vectors. If you felt ok working with things like the cross product and the determinant in your linear algebra/vector calculus courses, this shouldn't be too big of a leap.

R2 due / R3 assigned

*k*-forms (slides, video) Today we continue our journey toward building up (discrete) exterior calculus by talking about how to

*measure*little k-dimensional volumes. Just like rulers measure length, and cups measure volume,

*k-forms*will be used to take measurements of the little

*k*-dimensional volumes or

*k-vectors*that we built up using exterior algebra in our previous lecture. Such measurements will ultimately allow us to talk about integration over curved spaces; in the discrete setting, these measurements will be the basic data we associate with the elements of mesh.

A0 due / A1 assigned

*k*-form describes a

*k*-dimensional measurement at each point of space. For instance, the area 2-form on a sphere tells us how much each little piece of the sphere should contribute to an integral over the sphere. In this lecture we give some basic facts and definitions about differential

*k*-forms, and how to work with them in coordinates. Ultimately differential

*k*-forms will pave the way to a general notion of

*integration*, which in turn will be our basic mechanism for turning smooth equations into discrete ones (by integrating over elements of a mesh).

*n*-dimensional quantities that arise throughout geometry and physics. Our first lecture on exterior calculus studies the

*exterior derivative*, which describes the rate of change of a differential form, and (together with the Hodge star) generalizes the gradient, divergence, and curl operators from standard vector calculus.

R3 due / R4 assigned

*Stokes' theorem*, which generalizes the fundamental theorem of calculus, as well as many other important theorems from vector calculus and complex analysis (divergence theorem, Green's theorem, Cauchy's integral formula,

*etc.*). Stokes' theorem also plays a key role in numerical discretization of geometric problems, appearing for instance in finite volume methods and boundary element methods; for us it will be the essential tool for developing a discrete version of differential forms that we can actually compute with.

*k*-forms into discrete objects that we can actually compute with. The basic idea is actually quite simple: to capture some information about a differential

*k*-form, we integrate it over each oriented

*k*-simplex of a mesh. The resulting values are just ordinary numbers that give us some sense of what the original

*k*-form must have looked like.

R4 due / R5 assigned

*vector-valued forms*, i.e., differential forms which produce vector rather than scalar values when used to measure tangent vectors. Really this is not so different: for most operations we just apply the usual scalar operations to each component. However, there are some small differences for things like the wedge product that will make this language very expressive for curve and surface calculations. (This lecture is short, so we may also get started on curves.)

A1 due / A2 assigned

*geometry*in earnest, starting with smooth plane and space curves. Even low-dimensional geometry like curves reveal a lot of the phenomena that arise when studying curved manifolds in general. Our main result for this lecture is the

*fundamental theorem of space curves*, which reveals that (loosely speaking) a curve is entirely determined by its curvatures. Descriptions of geometry in terms of “auxiliary” quantities such as curvature play an important role in computation, since different algorithms may be easier or harder to formulate depending on the quantities or variables used to represent the geometry. Next lecture, for instance, we'll see some examples of algorithms for

*curvature flow*, which naturally play well with representations based on curvature!

*immersion*and an

*embedding*, and the key concepts of a

*Riemannian metric*which is central to much of differential geometry.

R5 due / R6 assigned

*Gauss map*which will later help us make sense of curvature. We also connect surface theory to the language of exterior calculus, which help us transition to the discrete case.

*curvatures*. For instance, the fundamental theorem for plane curves says that an arc-length parameterized plane curve is determined by its curvature function, up to rigid motions. Similar statements can be made about surfaces and their curvatures, which we explore in this lecture.

*integral*viewpoint, i.e., integrating smooth expressions for discrete curvatures in order to obtain curvature formulae suitable for discrete surfaces. In the next lecture, we will see a complementary

*variational*viewpoint, where discrete curvatures arise by instead taking derivatives of discrete geometry. Amazingly enough, these two perspectives will fit together naturally into a unified picture that connects essentially all of the standard discrete curvatures for triangle meshes.

*Steiner formula*. Along the way we'll touch upon several of the major players in discrete differential geometry, including a discrete version of Gauss-Bonnet, Schläfli's polyhedral formula, and the cotan Laplace operator—which will be the focus of our next set of lectures.

A2 due / A3 assigned

*discrete*differential geometry, but in differential geometry at large (not to mention physics!): the Laplace-Beltrami operator. This operator generalizes the familiar Laplacian you may have studied in vector calculus, which just gives the sum of second partial derivatives. We'll motivate Laplace-Beltrami from several points of view, which will in the next lecture lead to different approaches to discretization.

R6 due / R7 assigned

*mappings*between surfaces, which can be used to transfer data from one place to another. A particularly nice class of algorithms (both from a mathematical and computational perspective) are

*conformal*mappings, which preserve angles between vectors, and are generally very well-behaved. In this lecture we'll take a look at smooth characterizations of conformal maps, which will ultimately inspire the way we talk about conformal maps in the discrete/computational setting.

A3 due / A4 assigned

R7 due / R8 assigned

*rigid*: i.e., it does not capture any of the interesting structure of smooth conformal geometry. Instead, we'll see how less-obvious starting points (such as patterns of circles, or preservation of

*length cross ratios*) lead to some deep and beautiful connections between the classic smooth picture, and the discrete, combinatorial picture.

*straightest*vs.

*(locally) shortest*—will lead us down a path toward different discrete analogues, and ultimately, different algorithms. This first lecture covers the locally shortest perspective. We'll also see a glimpse of where (some) meshes come from, in connection with the so-called

*medial axis*.

*exponential map*and

*logarithmic map*, that help us understand what it means to take an “average” of points on a curved surface. We'll also get a glimpse at traditional calculations in Riemannian geometry, by working out the geodesic equation in Christoffel symbols (and comparing/contrasting to the discrete approach!).

A4 due / A5 assigned

R8 due / R9 assigned

A5 due

R9 due

**Assignment 0:**Combinatorial Surfaces**Assignment 1:**Exterior Calculus**Assignment 2:**Curvature**Assignment 3:**The Laplacian**Assignment 4:**Conformal Parameterization**Assignment 5:**Geodesic Distance**Assignment 6:**Direction Fields

Written/Coding Assignments

Roughly every two weeks you will implement some kind of numerical algorithm for working with geometry. An important part of this exercise will be deriving the algorithms, starting from the smooth geometric point of view that we will discuss in class. Each assignment is split roughly between derivations/proofs, and coding exercises. However, you will not have to write this code *“from scratch”*—for each assignment we will provide a code skeleton and ask you to implement critical routines that have been removed. Since this class tends to be a fairly diverse mix, we suggest that folks with a strong coding background seek out those with a strong math background and vice versa. However, *your final work must be your own!*

Homework Submission

- Assignments are due by
**5:59:59 PM Eastern time**on the due date*(not midnight!)* - All homework must be submitted digitally using GradeScope
- Put all source files in a
**single zip file**called`solution.zip`. - All written exercises must be digitized for submission, and uploaded to Gradescope. We won’t accept physical paper submissions.
- You can either typeset your answers (using,
*e.g.*, LaTeX) or include scans/photos of your written work.

- You can either typeset your answers (using,
- Feedback on your written assignment will be sent back to you via GradeScope

** Late policy:** You may take up to

**5 total late days**over the course of the semester, no questions asked. All subsequent late assignments will receive a zero. Late days are for assignments only (not readings). To receive credit, you

*must indicate which late day you’re using (1–5) on your assignment*by including the corresponding “Latonic solid”:

You can either draw these solids by hand, or use one of the provided image files.

**Reading 1:**Overview of DDG**Reading 2:**Combinatorial Surfaces**Reading 3:**Exterior Algebra and*k*-Forms**Reading 4:**Exterior Calculus**Reading 5:**Curves and Surfaces**Reading 6:**Discrete Laplace Operator**Reading 7:**Discrete Conformal Geometry**Reading 8:**Geodesic Algorithms**Reading 9:**Choose Your Own Adventure

Periodically we will ask you to read from the course notes or from other sources online. To encourage you to think more deeply about this material, we will ask you to write a response to each reading consisting of

- a short (2-3 sentence) summary of what you read, and
- at least one question or comment about something you found interesting and/or confusing.

Writing this summary will also help you prepare for our in-class discussion. **Summaries should be uploaded to Gradescope**. To receive credit, you must upload your summary by **10:00 AM Eastern time** on the day of lecture. Reading summaries must be turned in on time to receive credit (no late days can be used here).

Grades will be determined by performance on written and coding assignments, as well as participation in discussions in-class and on the course webpage. You will also be periodically asked to do readings from our course notes or from relevant papers, and provide short (2-3 sentence) written summaries. There will be seven assignments (with deadlines outlined on the course calendar) comprised of both a written and coding portion. The first two assignments are mandatory, because they establish a framework that will be used for all remaining assignments. To give you a bit of flexibility during the semester, **you can skip one out of the remaining five assignments with no penalty**. A 7th assignment can be completed for up to 15% extra credit. The last assignment (A6) will be given in lieu of a final. The grade breakdown is as follows:

**Assignments**– 90% (pick 6 out of 7)- (15%) A0:
*Combinatorial Surfaces*(can’t skip this one!) - (15%) A1:
*Exterior Calculus*(can’t skip this one!) - (15%) A2:
*Curvature* - (15%) A3:
*The Laplacian* - (15%) A4:
*Conformal Parameterization* - (15%) A5:
*Geodesic Distance* - (15%) A6:
*Tangent Vector Fields*

- (15%) A0:
**Readings**– 10%- (10%) – reading summaries/questions (1.1̅% each)

**Collaboration policy:** You are are* strongly encouraged* to discuss all course material with your peers, including the written and coding assignments. You are especially encouraged to seek out new friends from other disciplines (CS, math, engineering, etc.) whose experience might complement your own. However, your final work must be your own, written up in your own words and/or implemented by yourself. For instance, if you work collaboratively (e.g., on a whiteboard) you should erase it and go write up your own solution by yourself somewhere. You should not show other students your final writeup, or your final code, nor they should not look at it.

**Cheating policy:** Don’t cheat. If you get caught, you will get a zero in the course. This has happened before, and it was (truly) very sad for everyone. Duplicate work turned in by two different students will be considered cheating by *both students* (e.g., even if student A simply found student B’s printout on the printer and maliciously copied it) so be diligent about keeping your final work private!