four dimensional goodness - ben fry
originally completed sometime in december 2000
updated for processing in february 2005
ported to vanilla js in november 2022

based largely on what i learned/ported from HYPRCUBE.BAS
found in the following article by Ken Holmes (kholmes at melbpc.org.au)
http://www.melbpc.org.au/pcupdate/9907/9907article10.htm

this was my initial code to figure out how these things work,
which i later ported up to an arbtitrary number of dimensions
for the "atmosphere" project. see:
http://acg.media.mit.edu/projects/atmosphere
http://acg.media.mit.edu/people/fry/atmosphere

  space  to enable/disable auto-movement
      t  to show/hide the text

x y z w  to wiggle in each of the four dimensions
  1 2 3  to manually rotate with respect to each plane

    f s  to move faster or slower

vector font code originally authored by jared schiffman as part of
the acg's internal graphics library "acu". vector font by josh nimoy.

the integrator is my simple spring-based integrator class.