## Planes, trains and Kummer Surfaces

Here’s a short blog post for the holiday season, inspired by this article from Wolfram MathWorld. The topic is Kummer Surfaces, which are a particular family of algebraic varieties in 3-dimensional space. They make beautiful mathematical pictures, like these from their wikipedia page:

A Kummer surface is the points in space where a particular equation is satisfied. One way to describe them is as the zero-sets of equations like:

${(x^2 + y^2 + z^2 - \mu^2 )}^2 - \lambda (-z-\sqrt{2} x) ( -z + \sqrt{2} x) ( z + \sqrt{2} y ) ( z - \sqrt{2} y )$.

The variables $x, y , z$ are coordinates in 3-dimensional space, and $\lambda$ and $\mu$ are two parameters, related by the equation $\lambda ( 3 - \mu^2) = 3 \mu^2 - 1$. As we change the value of the parameter, the equation changes, and its zero set changes too.

What does the Kummer Surface look like as the parameter $\mu$ changes?

When the parameter $\mu^2 = 3$, the non-linearity of the Kummer surface disappears, the surface degenerates to a union of four planes.

When the parameter is close to 3, we’re between planes and Kummer surfaces:

And for $\mu^2 = 1.5$, we see the 16 singular points surrounding five almost-tetrahedra, in the center. A zoomed in version is in my other blog post that featured Kummer Surfaces.

Ok, I can see “planes” and “Kummer surface”, but what about “trains”? Well, I guess you say that when a parameter is changing, often something is being trained. Though, er, not here.

This equation is not for a Kummer surface, but it’s not so dissimilar either. It came up recently in one of my research projects:

${\left( x^2 + y^2 + z^2 - 2( x y + x z + y z ) \right)}^2 - 2(x + y - z )( x - y + z ) ( - x + y + z )$

P.S. The code (language=Mathematica) that I used to make the video is here:

anim = Animate[
ContourPlot3D[{(x^2 + y^2 + z^2 -
musq)^2 - ((3*musq - 1)/(3 - musq))*(1 - z -
sq2*x)*(1 - z + sq2*x)*(1 + z + sq2*y)*(1 + z - sq2*y) ==
0}, {x, -5, 5}, {y, -5, 5}, {z, -5, 5},
PerformanceGoal -> "Quality", BoxRatios -> 1,
PlotRange -> 1], {musq, 3.001, 1, 0.0002}];