Introduction to PoVRay I

Most surfaces in the repository are accompanied by PoVRay files to render them, so I think it is time to give a little introduction. You will need the software, available for free. This is a text based ray tracing program. Essentially, you need to describe a scene with objects in it, including light sources and camera. A good start is the following:

global_settings { assumed_gamma 2.2 }
#include ""

camera {
	location <0,0,-4>
 	right x*image_width/image_height    
	angle 40 look_at <0,0,0>

light_source { 
	color  White
 light_source { 
	color  White

This tells the software a sensible gamma calibration, loads names for colors, and places camera and light sources. Important here is the coordinate system. I like to center my objects at the origin <0,0,0>, and place the camera four units (meters) behind it. The angle 40 is a mild wide angle. The x and y coordinate are horizontal and vertical (screen) coordinates, and z is for depth. I have also placed two light sources up to the right and left behind the camera.

#macro surf(x0,y0) 
 .13*<-(x0*(-3*cos(y0) + x0*x0*cos(3*y0))),
 -(x0*(3*sin(y0) + x0*x0*sin(3*y0))),

#declare x0=0;         
#declare x1=sqrt(3);

#declare y0=0;				
#declare y1=2*pi;		

Next we need some formula to parametrize a surface. Up above is the code for the Enneper surface. We also need to define the range of the parameters. We do this using variables so that it is easier to change the code for something else.

Today, the plan is to make something like the images above: Placing small colorful beads at the grid points of a parameter grid. The code for this is a simple loop:

#declare eps=0.0001;

#macro make_sphere_carpet(x0,x1,xd,y0,y1,yd,rad)
  object {
    union {
      #local xc=x0;
      #while (xc < x1+eps)
        #local yc=y0;
        #while (yc<y1+eps)
          object {
	    sphere {surf(xc,yc), rad*xc}
	    pigment {rgb <(xc-x0)/(x1-x0), (sin(yc)+1)/2,.4>}
            finish {
	      specular 1
	      roughness .1
	  #local yc = yc+yd;
	#local xc = xc+xd;

The macro make_sphere_carpet takes the previously defined ranges of the parameter values as arguments, and in addition parameters xd and yd that determine how many spheres will be placed. rad controls the size of the spheres. Here, they also increase with the radius xc for dramatic effect. For each grid point (xc,yc) a sphere is placed at the coordinates surf(xc,yc), with a color that is also determined by the coordinate.

#declare xm=80; 			
#declare ym=200;			

#declare sphthick = 0.01;	

object {
   rotate <-90,-30,0>
   translate <-.1,0,0>

The rest is simple: We need to decide on how many spheres to place, and how big to make them, and call the macro. The last bit rotates and translates the surface in a decent position. The rotate command is a bit strange, the arguments are rotations in degrees about the x-, y-, and z-axis, in this order. Next time we will learn how to add a polygon mesh to all of this. Below is a sphere carpet for Catalan’s surface.


In his thesis, Peter Connor discusses doubly periodic minimal surfaces with parallel top and bottom ends that are cut by vertical planes into simply connected pieces. Here are two examples:

These surfaces can be systematically described using polygonal domains like the one below.

The left and right vertical edges where the curves end correspond to the ends of the surface, and the corners to the points with vertical Gauss map, recording whether it points up or down by a left or right turn. There are only finitely many possibilities for each genus, and they are easy to enumerate. What is not so easy is to find out whether the corresponding surfaces actually exist, either numerically or theoretically. For genus 3 and higher, existence proofs usually rely on understanding the limits of these surfaces, and this is what this post is about. When approaching a limit, a minimal surface necessarily decomposes into fundamentally simpler surfaces.

Above are two examples of Connor’s experimental doubly periodic surfaces of genus 3, near one of their limits. On the left hand side we see 8-ended singly periodic Scherk surfaces emerging, on the right hand side 10-ended Scherk surfaces. There is a simple count that helps to predict what can arise. This count is based on the fact that the total curvature of these surfaces is an integral multiple of 4π, and this multiple stays the same while deforming and approaching limit. Let’s call this multiple the degree of the surface (it is, in fact, nothing but the degree of its Gauss map). The Catenoid and the single and doubly periodic classical Scherk surfaces have all degree 1. More generally, a 2n-ended singly periodic Scherk surface of genus 0 has degree n-1, and a doubly periodic surface with four ends and of genus g has degree g+1. So the two surfaces above have all degree 4. For the left, the limit is a singly periodic Scherk surface of degree 3, but the components are stitched together using a catenoidal neck, adding 1 to the degree. The surface on the right limits in a Scherk surface of degree 4, so doesn’t need stitches.

Above are two more examples of genus 3 from Connor’s list. The left decomposes into two doubly periodic Karcher-Scherk surfaces of degree 2, the right one into two KMR surfaces, which have degree 2 each.

The big surprise of Connor’s series of examples of genus 3 was the surface to the left. It has the same combinatorial polygon description is the (known) RTW-surface to the right, but the handle has become eccentric. The limit in either case is a toroidal Scherk surface with 8 ends, which has degree 4. In the right case, this is again a known surface, but the left case is new. Proving the existence of either the doubly or the singly periodic version would be highly desirable.

Out of the Box

One of many ways to construct triply periodic minimal surfaces is via conjugate surfaces. You start with a polygon in space, solve the Plateau problem, construct the conjugate surface. Instead of straight edges, this conjugate surface piece will allow extension by reflecting across its boundary edges, and with a fair amount of luck, you obtain a nice triply periodic surface. There are two disadvantages of the Plateau method: You are numerically limited to minimizing Plateau solutions, and the whole approach gives little theoretical insight. Here is a variation of this approach:

We start with a minimal polygon inside a box with all edges perpendicular to the faces of the box. Reflections at the faces will produce 8 copies, which constitute a translational fundamental piece of a triply periodic surface. If we look at the boundary of the polygon in the vertical faces, we note that at the corners the Gauss map will be vertical. We encode this in a sequence of + and – signs. For the left boundary component in the example, we have two points with normal pointing (say) up, encoded by +. In the second component we first point down at the upper point, and then down at the lower point, encoded by +-. Both sequences give the symbol (++|+-).

The same information is also contained in the shaded rectangle above, with the red dots labeled a and b corresponding to the corners in the left boundary edge, and c and corresponding to those in the right edge. The entire rectangle then represents the torus quotient of the surface under the 180º rotation about the vertical axis. The vertices are the zeroes and poles of the Gauss map.

Together with the additional reflectional symmetries at the horizontal box faces (the vertical green lines in the rectangle), this information determines the Gauss map. The height differential on the quotient torus is just dz, so we have the entire Weierstrass representation of the surface, except that we do not know the values of the parameters a,b,c,d and τ.

A linear combination of the parameters a,b,c,d determines how the Gauss map rotates in horizontal symmetry planes. For 8-gons as above, one usually is then left with a 2-dimensional period problem, resulting in a 2-dimensional family of examples. This approach is useful for three reasons: One can use the Enneper-Weierstrass representation for theoretical and numerical purposes, investigate limits easily, and extend the method by forsaking the horizontal symmetries, as we will see at a later point.

This page shows examples for these seven types, you can find more under the individual surface pages, listed under the genus 5 box types section in the triply periodic minimal surfaces page.

The Costa Surface

In his 1982 PhD thesis, Celso José da Costa wrote down the Enneper-Weierstraß representation of a complete minimal torus with two catenoidal and one planar ends, all with limiting vertical normals. 

I do not know whether Costa had any hope or even opinion that his surface might be embedded, but this is what David Hoffman and William Meeks realized and proved in 1985. It was the first complete, embedded minimal surface of finite topology after 1776 when Meusnier had proved that the helicoid is minimal. This breakthrough has spawned a vast number of new examples and triggered ongoing research. 

David Hoffman and William Meeks found more symmetric examples of higher genus and were also able to deform the middle planar end into a catenoidal end.

Putting the new surfaces under some regime of classification has proven difficult. Costa’s proof that 3-ended embedded minimal tori belong to the Costa-Hoffman-Meeks family is all but transparent, and the question whether there are other embedded minimal tori of finite total curvature is still open. Examples with more ends seem to require also more handles, like Meinhard Wohlgemuth’s examples.

Then there are periodic examples that utilizes Costa saddles as building blocks, like the singly periodic Callahan-Hoffman-Meeks surface and the singly periodic Costa-Scherk surface below to the right that is different but possibly related to the Batista-Martín surface (of which I haven’t made a picture yet).

Below are two doubly periodic surfaces where the Costa saddles are rotated by 45º. The left one is the Lübeck-Batista surface, the right one a doubly periodic Callahan-Hoffman-Meeks surface with reflectional symmetries and without straight lines.  Can one rotate a Costa saddle continuously by 360º in any such configuration?

Finally, there are several triply periodic Costa surfaces. The left is Alan Schoen’s I6 surface from around 1970, found through soap film experiments, and predating the Costa surface by over 10 years. The middle one is Batista’s surface, and the right one a new example of genus 4 that actually has the Costa surface as a limit, and not the Callahan-Hoffman-Meeks surfaces.

All this is only a beginning. Laurent Hauswirth and Frank Pacard have smuggled a Costa saddle into Riemann’s minimal surface, making it a genus one surface with infinitely many ends. Laurent Hauswirth has also used Costa saddles to construct families of singly periodic surfaces with annular ends.

Winding Numbers

In 1960, Robert Osserman  proved that a complete minimal surface of finite total curvature is conformally a compact Riemann surface with finitely many points removed, and the Enneper-Weierstraß representation extends meromorphically to the punctures.

One could now attach to any such surface a number of invariants: the genus g of the surface, the degree deg G of the Gauss map, the number e of ends, and for each end a winding number \nu_j. The latter is computed by subtracting 1 from the maximal order of the poles of the Weierstraß 1-forms at that end. Geometrically, small circles about the puncture of shrinking radius are mapped to space curve that can be rescaled so that they  converge to a circle with that winding number as multiplicity.

Fritz Gackstatter (1976) and independently Luquesio Jorge and William Meeks (1983) proved a useful winding number formula for oriented minimal surfaces of finite total curvature:

2 deg G = 2g-2 +\sum_{j=1}^e \nu_j+1

For instance, the catenoid has genus 0, the degree of the Gauss map is 1, and there are two ends of winding number 2. Likewise, the the Enneper surface has genus 0, the degree of the Gauss map is 1, and there is one of winding number 3.  These are, as Osserman proved, the only complete minimal surfaces with total curvature -4π.


The next case of total curvature -8π was treated by F. López. Most prominently in his list is the Chen-Gackstatter surface, the only minimal torus of total curvature -8π.

Besides that, there are numerous spheres. One can have (by the winding number formula) one end of winding number 5, or two ends with winding numbers 1 and 3 or 2 and 2, or three ends with winding number 1 each. You find examples for all cases somewhere on this page.

Here is a question I don’t know the answer to: Can one have a complete minimal surface of finite total curvature with just one end of winding number 2? At first, this appears to contradict the winding number formula due to parity, but the surface could be non-orientable, like F. López’ amazing minimal Klein Bottle (which has a single Enneper end with winding number 3).


Exemplum VII

In 1744, Leonhard Euler published a book with the succinct title Methodus inveniendi lineas curvas maximi minimive proprietate gaudentes. In it, he develops a general method to find curves that satisfy extremal problem, which is cow called the Calculus of Variations. In contrast to the ordinary calculus which allows to find extrema of a single function by solving an equation involving the derivative of a function, here a functional is minimized or maximized over all functions by solving an ordinary differential equation.


His example VII has the title Invenire curvam, qua, inter omnes alias ejusdem longitudinis, circa axem AZ rotata, producat solidum superficies fit vel maxima vel minima.

Euler’s Latin almost doesn’t require a translation into English: To find a curve, which among all others with the same length (meaning defined over the same interval) and rotated about the z-axis, produces a solid whose surface shall be maximal or minimal.

Euler then proceeds, in a few lines, to apply his method to derive the differential equation for finding curves so that the corresponding surface of revolution has extremal area. Euler notes that this equation is solved by the catenary.

I am not a historian, so I do not know who coined the term catenoid, nor do I know who made a first image.

Euler  is not concerned with two catenaries passing through the same points and thus offering two different solutions of evidently different area.


Euler neither discusses nor defines the term minimal surface. This is done 1760 by Joseph Lagrange, who establishes in his note Essai d’une nouvelle methode pour determiner les maxima et les minima des formules intégrales indéfinies the minimal surface equation for a graph, observes that planar graphs satisfy his equation, and adds that “la solution générale doit être telle, que le périmètre de la surface puisse être détermine a volonté”  –the general solution ought to be such that the perimeter of the surface can be prescribed arbitrarily. Lagrange gives no further examples, but his comment has triggered research that is still ongoing.




Mission Statement

The purpose of this repository is to provide annotated high quality images, animations, and 3D data  of minimal surfaces.

It will consist mainly of two components: The repository that organizes the known surfaces and provides images, data, and references, and a blog that provides context, makes connections, explains things and tells anecdotes.

At the moment, there is very little here, but this will change rapidly. Bear with me while I struggle with WordPress. I plan to add a weekly blog post, and add content to the repository at a fast pace.

The main purpose, however, is to make the known minimal surfaces available to a broad community, including researchers, artists, and other interested people. To facilitate this, all the material can be used under the Creative Commons license below.

Creative Commons License
This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.

This project has been made possible through  the very generous support of a donor who wishes to remain unnamed.