sphereEversion* is a program that displays a sphere undergoing the Thurston eversion. Users can
Update (Feb 2005, version 0.4) : I have ported sphereEversion to GLUT, so that it now runs on MS Windows. I have also added support for alpha-blending (semi-transparency).
Version 0.4, executable for MS Windows: sphereEversion-0.4-exec.zip Consult the included README.TXT file for instructions on running.
Version 0.4, source code: sphereEversion-0.4-src.zip Runs on linux, MS Windows, and other platforms. Written in C++. Requires OpenGL, GLUT, STL, POSIX.
Update (Oct 26, 2001, version 0.3.1) :
Jamie Zawinski helped
me add a root window mode (enabled by running sphereEversion with
a --root flag) so that sphereEversion
could be invoked by
xscreensaver.
Version 0.3.1, source code: sphereEversion-0.3.1.tar.gz Runs on a Unix/X11 system. Requires OpenGL and Xlib.
Update (Nov 27, 2000, version 0.2) : Many thanks to Ralph Giles for providing a patch that makes sphereEversion easier to compile on a GNU/Linux box.
Disclaimer: Use at your own risk. The software on this webpage is provided "as is" and without warranty of any kind, either express or implied.
To make the sphereEversion program, I had to slightly hack the source code for evert, and then I wrote an OpenGL layer on top of it to render the everting sphere in 3D.
The code for generating the sphere's geometry, which was taken from evert, is rather complicated (I certainly don't understand how it works !). The code makes use of things called "jets" and vectors of "jets". I asked the author of evert what a "jet" is. Here's his response by e-mail:
A jet is really nothing more than the collection of all of the low-order
derivatives of a function up to a certain point. For instance, the
two-jet of f(x), a function of one variable, can be represented
by the triple (f, df/dx, d^2f/dx^2)
It turns out that if there aren't enough strips in the Thurston
eversion, then the eversion will not be "smooth". Apparently,
8 strips are enough to ensure continuity, but I don't know what
the minimum required number is. I asked the author of evert
if he knew. His response:
Actually, I don't know the minimum number of strips needed. We determined
that there was no pinching at 8 by watching carefully as a single strip
went through its contortions.
I asked Silvio Levy, another person involved
in the creation of evert, if he knew the minimum number of strips that
guarantees no pinch points. His response:
This depends on the exact equation used for the eversion. I don't
think anyone has made the calculations for the particular equations
that Nathaniel used. You can change the number of strips and try to
spot pinch points as you see the evolution.
If you are aware of the minimum number of strips, I would
be interested in hearing from you.