WOLFRAM

Making the Mathematica 6 Spikey

In 1992, while teaching at the Technical University of Ilmenau, I gave a three-semester course on the use of Mathematica. I am a theoretical physicist by training, so the graphics component was just one of the not-so-important parts of the system for me at the time. Calculating integrals and minimizing functions for many-parameter variational wave functions of semiconductor nanostructures in very high magnetic fields was much more on my mind.

But the students asked me to cover graphics in depth too, so I did. The cover picture of the Mathematica 2 book had a hyperbolic dodecahedron on it (the Version 1 book has a graphic of the Riemann zeta function along the critical strip).

Mathematica 2 spikey
The hyperbolic dodecahedron is quite symmetric and has the same symmetry group as a regular dodecahedron. It has a natural 120-fold symmetry (12 equivalent faces, each being a pentagon made from 10 equivalent pieces). Each one-tenth of a face just has a few polygons. By using the full symmetry group of the dodecahedron, constructing the tesselation used on the cover was relatively easy.

Starting with a regular dodecahedron with appropriately subdivided faces, one just has to extend the vertices outwards (or press the face centers inwards) to obtain a hyperbolic dodecahedron. I showed the construction in the lecture (a nice mixture of geometry, matrix algebra, equation solving and graphics itself).

Little did I know at that time that the force of the hyperbolic dodecahedron would be with me for the next 15 years.

A year later, I joined Wolfram Research, and soon thereafter Stephen Wolfram saw my construction in the lecture notes of the course. He asked me if I could construct a version of a hyperbolic dodecahedron for the Version 3 Mathematica book. To make the body more “three-dimensional,” I gave the individual faces a finite thickness, used a higher subdivision and so on. And the resulting hyperbolic dodecahedron ended up on the cover of Mathematica 3.

Mathematica 3 spikey
In 1998—a year before Mathematica 4 would be released—Stephen gave me a call saying that we needed a new hyperbolic dodecahedron. So I went back to the drawing board (a.k.a. Mathematica notebook) and started on variations. Our art director suggested a “less aggressive” version of the hyperbolic dodecahedron. If anything on a hyperbolic dodecahedron could be dangerous and aggressive at all (I think it’s just a beautiful geometric object), then it would be the “pointy” corners, which I cut off for Version 4.

Mathematica 4 spikey
Times changed by 2002, and various users didn’t like the sawed-off pointy vertices of the new logo anymore. For that year’s preparation of the next hyperbolic dodecahedron, for Mathematica 5, the pointy corners were on again.

Mathematica 5 spikey
In the meantime, Mathematica itself had become more refined, especially in edge and fringe areas. To reflect this, I thought to use an Escher-style tiling that becomes more fine-grained as one approaches the edges.

All the code, together with detailed comments and explanation of the steps to create the earlier versions of the hyperbolic dodecahedron, can be found in my Mathematica GuideBook for Graphics (pp. 841–861).

In 2005, Mathematica 6 was becoming more visible on our development horizon. We needed a new hyperbolic dodecahedron. With our totally new graphics system, many new possibilities opened up. There was now support for vertex-based coloring and the specification of vertex normals. This meant that surfaces could be rendered to give a very smooth appearance. Plotting functions refined surfaces as much as needed. And with the new dynamic interactivity, it became quite easy to build an interactive prototype and draft a shape that could later be rendered at much higher resolution.

Interactive hyperbolization

Another new feature in the graphics system is Opacity—a really, really neat feature, especially if united with position-dependent coloring and normals.

I decided to use Opacity for the Version 6 hyperbolic dodecahedron. Now, what to do with the actual surface? In Version 3 we just had flat polygons, then thickened polygons, and then beams, all resulting from regular subdivisions. I tried various new things, like embedding a 3D projection of a 4D 120-cell into a dodecahedron, Kepler’s pentagon-based subdivision-based fractal faces and “dodecahedral cutouts” of surfaces arising from random solutions of the Helmholtz equation (this is an interesting topic from physics and can neatly be done using the new RegionFunction option of ContourPlot3D).

Many of the 100+ versions I made looked interesting, but did they really reflect the intricate, widely branched nature of Mathematica 6?

3D projection of a 4D 120-cellKepler's fractal facesDodecahedral cutouts

Version 6 is in many respects completely different from earlier versions of Mathematica. Besides the already mentioned features are data collections, network visualizations and a new (less hierarchically structured than in earlier versions) documentation system with thousands of examples, to name just a few.

Things got more complex in the world of Mathematica, and I thought a less periodic and regular surface might look nice. I mapped various aperiodic tilings onto the faces of the dodecahedron. Relatively simple tilings looked most interesting, like a subdivision of an L into four smaller Ls iteratively applied.

Subdivision of Ls

Some fine-tuning of the subdivision, the opacity, the color (adding more red to represent all the blood, sweat and long nights that my coworkers put into Version 6 over the years), and color gradients had to be made, and voila—there was the Mathematica 6 spikey.

Mathematica 6 spikey
The interested blog reader can download the complete notebook with the Version 6 cover graphic’s construction and executable code.

Beyond the graphic, one could ask many interesting questions about hyperbolic Platonic solids, like what is their volume. But this is outside of the topic to be discussed today, and reminds me that I should get back to work; blogging is supposed to just take a few minutes. Some final touches have to be put on the Wolfram Functions Site—a new, greatly expanded version is coming. I hope to write about this here soon.