An early version of 3D-XplorMath (then called 3D-Filmstrip) goes back to 1987. It included a basic set of 3D graphics routines plus some routines for viewing and rotating 3D objects. Shortly after, Hermann Karcher visited me from Bonn and we worked hard together on the program, making many improvements. Hermann's wife Traudel is a physics teacher, and suggested the addition of the magnetic field examples for the second order, three-dimensional ODE category.
In August of 1995 Hermann visited me again, and we spent a couple of weeks working hard to program the Weierstrass-Enneper technique for defining minimal surfaces into 3D-XplorMath. (I travelled to Bonn for a week the next December to return the visit and finish the job.) Karcher is one of a small group of experts in this field, and I felt fortunate and grateful to have had this opportunity to learn his remarkably elegant and efficient numerical methods for carrying out the integrations and analytic continuations required to implement the Weierstrass-Enneper method. Many of the famous and beautiful minimal surfaces from the last century (those of Scherk, Riemann, Enneper, Schwarz) as well as the new ones discovered in the past decade by Chen-Gackstatter, Costa, Hoffman, Karcher, Meeks, Rosenberg, Wei and several others, can best be exhibited by this method. In fact, for most of these, the Weierstrass integrals cannot be found in closed form, so that numerical quadrature is essential.
It is not widely appreciated that a major problem in constructing "good" graphical representations for these surfaces---i.e., ones that suggest the correct behaviour of the surface outside of the picture, or in more mathematical terms a parametrization adapted to the ends of the minimal surface---is choosing in each case an appropriate grid along which to evaluate the Weierstrass integral. This involves starting with an equi-spaced rectangular grid, deforming the spacing so that more lines will be displayed "where interesting things are going on", and then mapping this grid conformally (often with an algebraic function that is computed by analytic continuation). This finally produces the grid along which the complex integrals must be evaluated to map the grid as parameter lines onto the minimal surface in three-space. But even then one is not finished! Because of various singularities and branch points (caused by the fact that one is really integrating on a topologically non-trivial Riemann surface rather than on a simply-connected domain) one cannot display the entire surface this way, and one must first use this technique to create a "tile" or "fundamental domain" of the surface, and then create the entire surface by applying a sequence of reflections and rotations to this tile.Carrying out each of the above steps requires an intimate and detailed knowledge of the conformal properties and symmetries of these remarkable geometric objects, and I particularly appreciate Hermann's willingness to contribute freely from his vast store of knowledge on these matters, much of which he discovered himself.
After Hermann's initial visit, I thought a lot about how to improve the program, but did not work on it for many years. Then, in mid-1993, David Eck showed me his remarkable Macintosh program shell, xWindows. It made programming in Think Object Pascal so easy and enjoyable that I was quickly able to implement all of the features I had been thinking about for so long. The "User Defined..." feature of the program is based on a powerful and speedy expression parser and evaluator, also developed by Eck. Indeed, when I needed a complex expression evaluator for the Conformal Map category, David took time out from his own work, to modify his real evaluator so it would handle complex expressions. I think it is fair to say that this program simply could not have been written without David's software contributions. (I am happy to report that, as of May 2003, David has rejoined the 3DXM Consortium and is leading the effort to create a platform independent version of 3D-XplorMath using Java.
My good friend Chandler Fulton, from the world of biology, was an early beta-tester of this program, and suggested that it might be possible to use it to make a 3D model of the DNA double-helix skeleton to help better visualise it. I thought about it a little and he was right, so "Double Helix" appears in the Surfaces menu. Chan supplied me with the appropriate default parameters for real DNA (the ratio of the radius of the helix to the pitch, and the vertical displacement of the two strands).
In the summer of 1998, my friend Angel Montesinos Amilibia did some further extensive testing of the program and suggested several important improvements. It is also Angel's excellent algorithms (and even his Pascal code) that I use in 3D-XplorMath to create implicit curves.
The parametrization of the pseudospherical surface corresponding to the "Breather" solution of the Sine-Gordon equation is due to Jochen Denzler.
The highly efficient code for performing fast Fourier transforms was written by my son Bob Palais. It plays a crucial role in many parts of the program.
The code to export 3D-XplorMath surfaces in formats readable by the ray tracing program POVRay and the 3D modelling program Bryce was written with important help from Paul Bourke and Luc Benard.