  Functionals that penalize bending or stretching of a surface play a key role
in geometric and scientific computing, but to date have ignored a very basic
requirement: in many situations, surfaces must not pass through themselves or
each other. This paper develops a numerical framework for optimization of
surface geometry while avoiding (self-)collision. The starting point is the
tangent-point energy, which effectively pushes apart pairs of points that are
close in space but distant along the surface. We develop a discretization of
this energy for triangle meshes, and introduce a novel acceleration scheme
based on a fractional Sobolev inner product. In contrast to similar schemes
developed for curves, we avoid the complexity of building a multiresolution
mesh hierarchy by decomposing our preconditioner into two ordinary Poisson
equations, plus forward application of a fractional differential operator. We
further accelerate this scheme via hierarchical approximation, and describe how
to incorporate a variety of constraints (on area, volume, etc.). Finally, we
explore how this machinery might be applied to problems in mathematical
visualization, geometric modeling, and geometry processing.
