Back to Synergetics


Last revision: July 8, 2008

This is a Java-based interactive viewer which allows you to investigate the jitterbug transformation. This transformation was discovered by Buckminster Fuller on April 23, 1948, according to one of his manuscripts. See Joachim Krausse and Claude Lichtenstein, eds., Your Private Sky, Baden, Switzerland: Lars Müller, c2001, pp. 174-175. pp. 26-31 of this book contain a discourse on this transformation, as does Section 460.00 of Synergetics.

I worked out the "equations of motion" of the jitterbug on October 14, 16, 24 and 25, 1981. When I got to putting together a website, Java seemed like an excellent vehicle for operationally documenting my work. The key equations are in in JitterbugModel.computeCoords(). The equations are used to set the xyz coordinate values for one vertex of the jitterbug. The other vertices are derived from symmetry transformations of the values for that vertex. More recently I've begun working on the same thing in VRML.


Things start out in "Animate" mode which means the jitterbug is continuously moving through its various stages. Selecting the "Step" option (or clicking the "Step" button) stops the movement, or, if it is already stopped, moves the jitterbug slightly toward its next stage.

In the "Step" mode, extra lines appear at certain stages:

Any of these distinctive stages, as well as the two "Octahedron" stages (which both appear identical), can also be selected directly from the list of options.

Selecting the "Animate" option (or clicking the "Animate" button) starts up the continuous movement again. Choosing this option several times in a row will speed up the animation. In the animation mode, the extra lines never appear.

The jitterbug can be rotated at any time (animated or not) by pressing down the left mouse button while the mouse is in the viewing area and moving the mouse in the desired direction of rotation.

The Jitterbug

Additional Notes

I like to maneuver the jitterbug into an interesting orientation while it is stopped and then animate it or select different stages to see how the jitterbug appears at different stages while in that orientation.

The Greeks' cuboctahedron looks superficially similar to a vector equilibrium, but it is not the same thing. Notice the extra lines at the vector-equilibrium stage are internal. See the Two-Frequency Vector Equilibrium page for more information.

The relevant source code files are,, and contains a main() routine for a stand-alone Java application program which duplicates the behavior of the applet, but is resizable as well.

My original two-tier (JitterbugViewer and JitterbugController) design has now expanded into three tiers with JitterbugModel being added to encapsulate the device-independent component. Hopefully this will add more clarity to the operations. The parallels between this and the Jitterbugs code is still good at the GUI/JitterbugViewer level of things, but it has not been upgraded to encapsulate the device-independent components.

The classes break down as follows:

The division of responsibilities between the classes seems more satisfactory to me now. In pondering the partitioning, I have considered a two patterns. The first is the Browser/Server/Database pattern. JitterbugViewer seems to fit the role of a browser to me. JitterbugController fits the role of a server. And JitterbugModel seems a good match for a database except that it computes everything from the angle as needed. The second pattern is the Model/View/Controller (MVC) which is a more recent concept for me. The state of the model is summarized very succinctly in the angle value, and it seems more convenient to store that in JitterbugRenderer rather than JitterbugModel. Perhaps JitterbugController and JitterbugRenderer, taken together, could be seen to fit the View part of the MVC pattern. But an important component of the view, the device transformation, is managed by JitterbugViewer.

The applet is currently internationalized for de, en, es, fr and nl localities. Your suggestions on translations for these localities or other languages are appreciated. Look over the English template for the phrases I am translating. Thanks to Val Gómez Jáuregui for help on the Spanish and his boss for help on the German. Thanks to Jan Marcus for the Dutch translations he supplied.

Contact Information

Your comments and questions are welcome. Send them to:

Bob Burkhardt
Tensegrity Solutions
Box 426164
Cambridge, MA 02142-0021


Back to Synergetics