xj
==

xj is a program which displays a 3-dimensional animation of juggling
patterns. It uses X and Motif for the graphics and user interface.

Compiling
---------

I have only tested this so far on the following platforms:

Sparc / SunOs 4.1
Sparc / Solaris

And the gcc compiler.

If you're running something else then you may well "experience minor
technical difficulties". Good luck! 

All that should be necessary is to make a couple of changes in the
Makefile. There are two macros used to specify where the compiler and
linker should look for X11 and Motif include files and libraries. Change
these as directed by the comments, then type make.

Usage
-----

You can just type xj to start it up, but there are command line options
if you wish:

Usage: xj [-h num_hands] [main-pattern] [-s startup-pattern] [debug-opts]

num_hands is an integer (not 0). This number of arms will be used for
juggling - this isn't changeable via the UI whilst running.

main-pattern is a site-swap pattern, given as a sequence of integers
separated by spaces. This will be the pattern displayed initially,
although others can be added by means of a pop-up dialog. The default
pattern, if this argument is not given, is 3.

startup-pattern is also a site-swap sequence - this is an introductory
sequence of throws thrown before the main pattern starts and repeats. If
not specified, and a start-up is needed, it is auto-generated.

For an explanation of site-swap and multiple hands see the original
documentation file for xjuggle, juggle.hlp - but ignore the section
about 'Variables' as that doesn't apply to this version. 

The various buttons and sliders in xj should be fairly intuitive or
self-explanatory, so just keep pressing ad see if you can work out what
they all do. All widgets are activated by clicking the left mouse
button. If you get stuck, see the file xj.hlp for an full explanation
of all the controls.

History
-------
From its stunningly realistic and  fully interactive appearance, you
might not guess this, but if one were to look very carefully at the
sources, it is possible to see preserved fossil-like in the strata of
C-code, evidence of this program's primitive 2-dimensional past. Yes,
it's true - this all-singing, all-dancing, sex-on-a-vdu program was
originally none other than the very wonderful and much loved, if
somewhat minimalist 'xjuggle'. Rather like the massed accumulations of
alien technology found surrounding the early space probe Voyager in the
film Star Trek, this bloated and modified creature now returns to the
place of its nativity - the Net. (:-)

Some of the people involved in the original xjuggle project were (apparently):
  Bengt Magnusson  <bengt@heaven.i.hope>
  Allen Knutson    <allenk@through.ugcs.caltech.edu>
  Bruce Tiemann    <boppo@coil.cco.caltech.edu>
  Joel Hamkins
  Jack Boyce       <jboyce@tybalt.caltech.edu>
  John Robinson    <jr@ksr.com>
  Joe Gaudreau
  David Nedde      <daven@maxine.wpi.edu>
  Alastair Reid    <areid@dcs.glasgow.ac.uk>
  John Vert        <jvert@microsoft.com>

Well done, guys, good stuff!

In fact, the story goes more like this: I went on an X/Motif course,
and afterwards decided it would be nice to try a few of these Widget
things out on xjuggle, rather than that clunky text interface it had. I
soon decided that it absolutely had to be 3D so the hacking continued
and this is the first half decent releasable result. 

I originally intended to try to make the sources still compile for the
PC and Curses targets, but sadly I lost enthusiasm as the program
became more complex and finally ripped out all those ifdefs. Sorry. If
anyone feels like adapting it to another graphics platform, they'll
have to re-write x_uif.c and x_graphics.c

Jeremy Kirkwood
jpk@inmos.co.uk
