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.