One of the most basic geometric optimization problems is that of finding
a least area (or minimal) surface spanning a given boundary; this can
be done easily with a program written by Ken Brakke called
the Surface Evolver.
We will learn how to create input datafiles describing a curve or
surface, and how to guide the optimization process interactively or
with a script. Then we will discuss how to add volume constraints and
symmetry constraints to compute, for instance, the shapes of foams
like the one pictured above.
Then we will explore the use of the Evolver to
minimize different energies, like an elastic bending energy for
surfaces, or a Coulomb potential for knotted wires. Interesting
questions arise when discretizing an energy defined for smooth surfaces
to work with the polyhedral approximations used by the computer.
Rendering Mathematical Surfaces
The Evolver is set up to show interactive graphics through the
Geomview package.
We will discuss how to send the Evolver's geometric
data to other packages. For instance, Pixar's RenderMan can produce
nicer color pictures (like the ones illustrating these pages)
by simulating transparent films, while postscript would
be used for high-quality greyscale images for inclusion in text documents.
Interactive Graphics on the Web
The rapid expansion of the World-Wide Web is creating new opportunities
for disseminating mathematics. Programs written in the Java language
can be downloaded from a web page and run on almost any computer.
Finally, interactive graphics programs are truly portable.
We will learn how to use Java for mathematical graphics in two and three
dimensions.
Possible Projects
Throughout the semester there will be exercises or small projects
assigned to all students. But a major part of the course work will
be an individual or group final project chosen by the students.
Possible projects might include
Adding a new geometric energy to the evolver code.
Adding a new general symmetry group to the evolver code.
Adding features to the evolver to detect and track surface intersections.
Writing an evolver script to properly communicate symmetric surfaces
to Renderman.
Writing a ray-tracing renderer for soap films.
Writing a Java applet to illustrate some mathematical idea.