Juggle(6)              Chipmunk Software Documentation              Juggle(6)

NAME
   Juggle -- Juggling pattern demonstrator

SYNOPSIS
   juggle [-d] <pattern> [-s <pattern>]

DESCRIPTION
   This program takes patterns on the command line in the form invented by
   some of Bruce Tiemann [BOPPO], Bengt Magnusson, and Joel Hamkins [LOGIC]
   to specify two-handed alternating patterns.

   The program has a simple internal form to keep track of the balls: the -d
   flag causes the diagnostics to be printed.  If the program discovers a
   flaw in the pattern, it forces the diagnostics.  Either way, most nice
   features of the program are disabled.

JUGGLING PATTERNS
   A viable juggling pattern is a series of integers (throws) that, when
   repeated infinitely, doesn't have any two thrown balls land at the same
   time (i.e. things with ... 4 3 ... or ...3 x 1... don't work), and such
   that the average of the throws equals the number of balls involved.

   In general, n-throws are the throws you would use to juggle n balls with
   your hands alternating.  More exactly, each throw gives the number of
   throws before that ball is to be thrown again.  Since the hands are
   assumed to alternate, a pattern like 3 1 ends up being Left-3-Red ball,
   Right-1-Green ball, Left-3-Green ball since the green ball has to be
   instantly thrown again, and so on.  For this reason odd balls always
   switch hands, even balls always stay in the same hand. 0-throws only make
   sense for empty hands.  1-throws are generally used for showering, or
   "circle juggling" to the uninitiate.  2-throws are best approximated by
   simply holding the ball for a while (try 2 or 4 2).

   It is an important theorem, envisioning patterns as permutations, that the
   average of the throws has to equal the number of balls being juggled (too
   few, and hands become empty: too many, and hands become too full).  In
   fact, this is how the program figures out how many balls to allocate.

EXAMPLES


   *   juggle n keeps doing n-throws over and over.
   *   juggle 5 3 inside half-showers 4.
   *   juggle 5 5 5 1 is a fun 4-pattern.
   *   juggle 3 3 0 does two out of three.
   *   juggle 6 4 5 5 5 or juggle 7 5 3 5 5 are elementary permutations with
       five balls.

VARIABLES
   Currently there are five run-time variables: detail, center, wingspan,
   clumsiness, and height.  One can toggle through them with 't', 'T' or
   shift-knob, modify them with the unshifted knob, and fix them with 'f'.

   *   Detail says how many intermediate spots should be drawn between two
       reference spots of a throw, an n-throw having 4n reference spots.
   *   Center is to simulate wind conditions.
   *   Wingspan says how far apart the hands are.  This can be made negative
            to simulate crossed hands.
   *   Clumsiness says how much your juggler moves his hands between catching
       and throwing.  Making Clumsiness >> Wingspan makes an odd n-pattern
            look even, and Wingspan >> Clumsiness makes an even one look odd.
   *   Height badly simulates the effect of a low ceiling.  Detail needs to
       be scaled down to make the gravity stay constant.  Mainly it's useful
       in fitting startup patterns on screen.

STARTUP PATTERNS
   Using the -s flag specifies that the second pattern should be done once,
   then revert to the first pattern forever.  Mainly it's useful for patterns
   that require weird initial conditions, like starting with four balls in
   one hand and two in the other.

EXAMPLES


   *   juggle 5 1 -s 5 2 showers 3 balls.
   *   juggle 7 1 -s 7 4 showers 4.
   *   juggle 3 -s 4 4 1 does a little fiddling about, then settles into the
       staid 3-cascade.

DRUG REFERENCE
   If you want to see what the pattern would look like on acid, use the 'a'
   key.  To render you once again straight, use the 's' key.

THE PROGRAM
   The program is a mess, but it has a very very easy way of putting in
   additional variables.  One obvious one would be a left clumsiness and a
   right clumsiness.  Perhaps one could restore the ability to change the
   ball's size: m_ellipse is almost as fast as m_putcpicture for balls with
   radius 5, the default.

BUGS
   The -d flag doesn't work, but much more importantly, helpcom2 sux.

AUTHOR
   Allen Ivar Knutson [ALLENK]

