Steiner Surfaces

© Mike Williams 2002,2003,2004

Up | Previous: Using Arrays and Macros | Next: Mathematical Zoo | Alphabetical Index

Steiner surfaces are representations of the projective plane, discovered by J. Steiner. For in-depth mathematical information about Steiner surfaces see http://www.ipfw.edu/math/Coffman/steinersurface.html.

All Steiner surfaces contain singularities of some form or other.

This is Steiner's Roman Surface. It has three double lines, six pinch points, and a triple point.

function {x*x*y*y + x*x*z*z + y*y*z*z - x*y*z}
This surface has two pinch points, three double lines and a triple point.

function {x*x*y*y - x*x*z*z + y*y*z*z - x*y*z}
This is Steiner's Cross-Cap Surface. It has one double line and two pinch points. The pinch points are known as Whitney singularities.

function {4*x*x*(x*x + y*y + z*z + z) 
    + y*y*(y*y + z*z - 1) }
This surface has a "tachnodal" line, a double line and two pinch points.

function {y*y - 2*x*y*y -x*z*z
    +x*x*y*y +x*x*z*z -z*z*z*z}
This surface has a "tachnodal" line, a double line and four pinch points.

For some reason, this surface didn't look anything remotely like what it was supposed to when I used function x*x*(z-1)*(z-1) +y*y*(y*y+z*z-1) so I've actually used a parametric isosurface to generate it.


#declare Fx = function {2*u*cos(v)*sqrt(1-u*u)}
#declare Fy = function {2*u*sin(v)*sqrt(1-u*u)}
#declare Fz = function {1-2*u*u*cos(v)*cos(v)}

parametric {
  function {Fx(u,v,0)}
  function {Fy(u,v,0)}
  function {Fz(u,v,0)}
      <0,0>,<1,2*pi>
  contained_by{box{<-R,-R,-R>,<R,R,R>}}
  precompute 18, x,y,z
}
This surface has an "oscnodal" line. It has been called the "Cross Cup" due to its similarity to the cross cap.

For some reason, this surface didn't look anything remotely like what it was supposed to when I used a conventional isosurface so I've actually used a parametric isosurface to generate it.


#declare Fx = function {1 -u*u +u*u*sin(v)*sin(v)}
#declare Fy = function {u*u*sin(v)*sin(v)
        +2*u*u*sin(v)*cos(v)}
#declare Fz = function {sqrt((1-u*u)/2)*u*(sin(v)+cos(v))}

parametric {
  function {Fx(u,v,0)}
  function {Fy(u,v,0)}
  function {Fz(u,v,0)}
      <0,0>,<1,2*pi>
  contained_by{box{V1,V2}}
  max_gradient 10
  accuracy 0.00001
  precompute 20, x,y,z
Warning: This surface takes a ridiculously long time to render.
This surface has a double line and no pinch points.

function {x*y*y -y*z -x*z*z }
This is Whitney's Umbrella. It has two pinch points, one of which is at infinity.

function {x*x -y*y*z}
This surface is isomorphic to Whitney's Umbrella, but has the two pinch points close to the origin. It's called Plücker's Conoid.

function {x*x - x*x*z -y*y*z }
This is Cayley's Ruled Cubic. It has one double line and a singularity called a "unode," which is not a pinch point.

function {y*y*y +x*y*z -z*z}

Download a zip file containing the POV source files for all the images that appear on this page.

Up | Previous: Using Arrays and Macros | Next: Mathematical Zoo | Alphabetical Index