about.html
Copyright (c) 1996 Allen Knutson, Matthew Levine, Gregory Warrington
This file is part of The Juggler.
The Juggler is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
The Juggler is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
You should have received a copy of the GNU General Public License
along with The Juggler; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
About the juggling animator
Playing with the master juggler
Settings
The controls in the juggler settings panel on the master juggler
are hopefully self-explanatory.
Pattern entry
The easiest way to enter a pattern is to double-click on a thumbnail
juggler applet embedded in the text; however, this only lets you
play with the prepackaged patterns. The following block is the
complete description of what the juggler will accept as a pattern.
The basic unit in a pattern string is the multiplex throw,
which is either just an individual throw or a collection of invididual throws
collected between brackets [].
An individual throw is a number, followed by a (possibly empty)
list of throw modifiers a-z.
If the pattern string has no embedded spaces,
the numbers are read in as digits 0-9 and letters A-Z (interpreted
as 10-35). If a space appears anywhere in the pattern, consecutive
digits are read as a single number.
There are two kinds of patterns: synchronous and asynchronous.
An asynchronous pattern is simply a list of multiplex throws;
a synchronous pattern is a list of pairs of multiplex throws,
where each individual throw is an even number.
The pattern parser searches the pattern for parentheses and commas;
if it finds even one, it decides the pattern is synchronous, and
will then only complain if it has an odd number of multiplex throws,
or if any of the individual throws are odd.
If there are no parentheses or commas, the pattern parser will only
complain if it finds characters other than {space, 0-9, A-Z, a-z},
if the multiplexing brackets [] are badly matched, or if the
throw modifier "x" is used (since it's only supposed to be in
asynchronous patterns).
Examples
These are to specify a series of throws to be performed over and over.
So if you really want to see fifteen balls juggled in a cascade,
but despair because the string "15" is interpreted as one:five since
it has no embedded spaces, you can be tricky and get the
desired effect with "15 15".
Throw modifiers
Note that not every well-formed pattern is actually jugglable!
This is explained in the section on
Working Backwards
from numbers to juggilng.
Details of the program
Each juggler is just one thread, as is each space-time diagram.
They can be linked to one another on a page by giving each a
"family name" parameter; the juggler then finds the diagram
via its getAppletInfo().
The thumbnail jugglers talk to the main Juggler through
static variables, which is necessary for them to find one
another across pages.
All the calculation is done in the jugglers, which then call
methods in the space-time diagrams. Making them separate applets
is essentially only useful for placing them on a page.
Now you're ready for the theory!
Space-time diagrams
Return to "Juggling By The Numbers" Main Page