# Calabi-Yau and Hanson’s surfaces

I have a glass cube on my office windowsill containing a slice of a Calabi-Yau manifold, one of Bathsheba Grossman’s wonderful creations. It is an intricate, self-intersecting surface with lots of unexpected symmetries. A visiting friend got me into trying to make my own version of the surface.

First, what is the equation for it? Grossman-Hanson’s explanation is somewhat involved, but basically what we are seeing is a 2D slice through a 6-dimensional manifold in a projective space expressed as the 4D manifold $z_1^5+z_2^5=1$, where the variables are complex. Hanson shows that this is a kind of complex superquadric in this paper. This leads to the formulae: $z_1(\theta,\xi,k_1)=e^{2\pi i k_1 / n}\cosh(\theta+\xi i)^{2/n}$ $z_2(\theta,\xi,k_2)=e^{2 \pi i k_2 / n}\sinh(\theta+\xi i)^{2/n}/i$

where the k’s run through $0 \leq k \leq (n-1)$. Each pair $k_1,k_2$ corresponds to one patch of what is essentially a complex catenoid. This is still a 4D object. To plot it, we plot the points $(\Re(z_1),\Re(z_2),\cos(\alpha)\Im(z_1)+\sin(\alpha)\Im(z_2))$

where $\alpha$ is some suitable angle to tilt the projection into 3-space. Hanson’s explanation is very clear; I originally reverse-engineered the same formula from the code at Ziyi Zhang’s site. The Hanson n=4 Calabi-Yau manifold projected into 3-space.

The result is pretty nifty. It is tricky to see how it hangs together in 2D; rotating it in 3D helps a bit. It is composed of 16 identical patches: The patches making up the Hanson Calabi-Yau surface.

The boundary of the patches meet other patches except along two open borders (corresponding to large or small values of $\theta$): these form the edges of the manifold and strictly speaking I ought to have rendered them to infinity. That would have made it unbounded and somewhat boring to look at: four disks meeting at an angle, with the interesting part hidden inside. By marking the edges we can see that the boundary are four linked wobbly circles: Boundary of the piece of the Hanson Calabi-Yau manifold displayed.

A surface bounded by a knot or a link is called a Seifert surface. While these surfaces look a lot like minimal surfaces they are not exactly minimal when I estimate the mean curvature (it should be exactly zero); while this could be because of lack of numerical precision I think it is real: while minimal surfaces are Ricci-flat, the converse is not necessarily true.

Changing N produces other surfaces. N=2 is basically a catenoid (tilted and self-intersecting). As N increases it becomes more like a barrel or a pufferfish, with one direction dominated by circular saddle regions, one showing a meshwork of spaces reminiscent of spacefilling minimal surfaces, and one a lot of overlapping “barbs”. Hanson’s Calabi-Yau surface for N=2, N=3, N=5 and N=8.

Note that just like for minimal surfaces one can multiply $z_1, z_2$ by $e^{i\omega}$ to get another surface in an associate family. In this case it circulates the patches along their circles without changing the surface much.

Hanson also notes that by changing the formula to $z_1^{n_1}+z_2^{n_2}=1$ we can get boundaries that are torus-knot-like. This leads to the formulae: $z_1(\theta,\xi,k_1)=e^{2\pi i k_1 / n_1}\cosh(\theta+\xi i)^{2/n_1}$ $z_2(\theta,\xi,k_2)=e^{2 \pi i k_2 / n_2}\sinh(\theta+\xi i)^{2/n_2}/i$ Knotted surface for n1=4, n2=3.

## Appendix: Matlab code

%% Initialization edge=0; % Mark edge? coloring=1; % Patch coloring type n=4; s=0.1; % Gridsize alp=1; ca=cos(alp); sa=sin(alp); % Projection [theta,xi]=meshgrid(-1.5:s:1.5,1*(pi/2)*(0:1:16)/16); z=theta+xi*i; % Color scheme tt=2*pi*(1:200)'/200; co=.5+.5*[cos(tt) cos(tt+1) cos(tt+2)]; colormap(co) %% Plot clf hold on for k1=0:(n-1) for k2=0:(n-1) z1=exp(k1*2*pi*i/n)*cosh(z).^(2/n); z2=exp(k2*2*pi*i/n)*(1/i)*sinh(z).^(2/n); X=real(z1); Y=real(z2); Z=ca*imag(z1)+sa*imag(z2); if (coloring==0) surf(X,Y,Z); else switch (coloring) case 1 C=z1*0+(k1+k2*n); % Color by patch case 2 C=abs(z1); case 3 C=theta; case 4 C=xi; case 5 C=angle(z1); case 6 C=z1*0+1; end h=surf(X,Y,Z,C); set(h,'EdgeAlpha',0.4) end if (edge>0) plot3(X(:,end),Y(:,end),Z(:,end),'r','LineWidth',2) plot3(X(:,1),Y(:,1),Z(:,1),'r','LineWidth',2) end end end view([2 3 1]) camlight h=camlight('left'); set(h,'Color',[1 1 1]*.5) axis equal axis vis3d axis off