Geometry Processing, Spring 2026

Michael Kazhdan


Assignment 5: The Wave Equation -- Implicit and Spectral Time-Stepping

Due on April 25 (Saturday) at 11:59 PM


Announcements


Overview

In this assignment you will implement implicit and spectral time-stepping of the wave equation PDE. Given initial displacements (with zero velocity), at each time-step you will compute the per-vertex displacements, which will be visualized by offsettting the geometry of the surface in the normal direction.

Getting Started

You should use the code (GeometryProcessing.zip) as a starting point for your assignment. We provide you with numerous files, but you should only have to change the WaveEquation/WaveEquation.cpp and SpectralWaveEquation/SpectralWaveEquation.cpp files.

After you download the files, the first thing to do is compile the WaveEquation and SpectralWaveEquation executables.


How to Invoke the Executable

WaveEquation
The executable runs on the command line. It takes a geometry file as input, either in ply or in obj file format (determined by the file extension) and opens up an OpenGL-based viewer supporting the prescription of displacement impulses, and time-step the wave equation PDE to get the evolution of displacements over time.
To see the supported command line arguments, run the executable without an argyments:
% WaveEquation
To run the visualization, invoke the executable as:
% WaveEquation --in <input geometry> [--timeStep <integration time-step>] [--rain <rain frequency>]
With:

SpectralWaveEquation
The executable runs on the command line. It takes a geometry file as input, either in ply or in obj file format (determined by the file extension) and opens up an OpenGL-based viewer supporting the prescription of displacement impulses, and time-step the wave equation PDE to get the evolution of displacements over time.
To see the supported command line arguments, run the executable without an argyments:
% SpectralWaveEquation
To run the visualization, invoke the executable as:
% SpectralWaveEquation --in <input geometry> [--timeStep <integration time-step>] [--sDimension <spectral dimension>] [--rain <rain frequency>]
With:

How to Interact with the Executable

WaveEquation and SpectralWaveEquation
Upon invocation, the executable will open an OpenGL window where local impulses can be prescribed.
The basic supported interfaces are:


What You Have to Do

WaveEquation/WaveEquation.cpp:
You will need to modify this file to support the implicit time-stepping of the wave equation PDE in three places:

SpectralWaveEquation/SpectralWaveEquation.cpp:
You will need to modify this file to support the spectral time-stepping of the wave equation PDE in five places:
Please see the assignment description for additional details.

Question


What to Submit

Please submit your implementation on canvas.
For this assignment, you should submit: