Making the Mathematica 6 Spikey
May 22, 2007 — Michael Trott, Chief Scientist
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).
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.
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.
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?
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.
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.
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.