Squarepath Window
The purpose of this window is to
allow the user to specify and plot large
portions of certain infinite families
of words. At least for obtuse triangles,
there is a canonical bijection between a
certain closed loop, which we call the squarepath
and stable periodic billiard paths. The rough idea is that
you can grab a squarepath from the main console, modify
it, then send back the corresponding new word. This
window allows you to do this in a systematic way.
The hexpath
Let W be a word in the digits 1,2,3.
For instance W=123123.
We associate to W a path H(W) in the hexagonal grid, as follows:
We group the edges of the hexagonal grid into three types, depending on their direction.
We then trace out the edges on the grid according to the digits of the word.
The word W is stable if and only if H(W) is a closed path.
We call H(W) the hexpath
In our example, H(W) is a hexagon.
More detail about the hexpath is given in the documentation for
the word window.
The squarepath:
As we have just explained, there is a direct correspondence between a word and a hexpath.
The squarepath is canonically associated to a word just as the
hexpath is. In brief, the vertical edges of the squarepath correspond
to the strings in the word having the form 131313... and the horizontal
edges correspond to the strings in the word having the form 232323.
For obtuse words, we never see the strings 121 or 212. So, keeping
track of these horizontals and verticals completely captures the word.
To see the relation between the squarepath and the hexpath you should draw
some examples in the word window. Also, the documentation for the
word window has a precise description of the squarepath.
grabbing words:
When you open up the squarepath window, the most basic thing you can do is push the
grab word button. This makes the squarepath window aware of the
current word and draws its squarepath. If you have selected the window scale
option, the squarepath will be scaled (differently in the x and y directions)
so as to fill the window. This scaling distorts the true proportions of the
squarepath. If you have selected the true scale option, then you
will see the squarepath drawn as large will fit in the window, with the
true proportions.
modifying the squarepath:
When you grab a word, you will see a list of
integers appear, under the heading current state These integers display
the lengths of the successive edges of the squarepath. The signs indicate the
direction, when the squarepath is traced out clockwise. By clicking on this
display, you can see which number corresponds to which edge. By entering
numbers from the keyboard you can change these lengths. If you want to keep the
same general shape, you should take care to enter a new number which has the same
sign as the one initially displayed. The integer entry system works as follows:
- first enter a positive number using the digits 0,...,9 and the backspace key.
- push the minus key to negate the number.
If you make a mistake in your modification you can just re-grab the word.
The two two numbers in the display, the ones not contained in black rectangles,
represent the total horizontal and vertical displacement of the squarepath.
In order to make a valid squarepath, these numbers must both be 0. McBilliards
will let you enter curves which fail to have this property, and even send them
back to the main console. However, they do not correspond to stable words.
sending words:
Once you have modified a squarepath to your liking, you can send it back to the
main McBilliards console using the send word button. Once again, you should
only send squarepaths which are closed loops. To see the send feature in action you
should have the word window open (preferably with the squarepath option turned on).
vectors:
After playing with this window for a while, you might want to modify squarepaths
in a more systematic way. You can do this by specifying some vectors
each vector is a preset amount by which you modify the square path. The first
step is to decide how many vectors you would like. The default is 4, and you
can define up to 10. Here are the modes for using vectors:
- display: In this mode you can click on the integer entries of the
vector and specify it. The top two numbers, the ones not in rectangular
boxes, keep track of the total column sum of each column. These numbers should
both be 0. If you want to modify the Kth vector you should first click
on the Kth little black box in the blue strip on the right hand side.
- display & act:
In this mode, a click on the Kth little box in the blue strip will cause
your vector to be added to or subtracted from the current state. A left click
chooses the add option and a right click chooses the subtract option.
Not every vector is allowed to act. Two squarepaths have the same
combinatorial type provided that they have the same number of edges and
all the (directed) lengths have the same sign. If you try to add a
vector which changes one of the signs (or makes a length 0) then nothing
will happen when you click.
- grab diff: This mode is designed to compute the ``displacement''
between two words which have already been plotted by McBilliards. It works
like this: First grab word 1 from McBilliards. With the grab diff >
mode on, select a second word and then
click the Kth little box in the blue strip.
If the squarepaths of the two words have the same combinatorial
type, the Kth vector is then set to the difference between the
two squarepaths. In other words, adding the vector to the first
squarepath produces the second one. If the two squarepaths have
different combinatorial types, nothing happens.
easy basis
If you don't want to take the trouble to define your own vectors, you can
push the easy basis button. This will produce a list of up to
10 preset vectors. If the squarepath has at most 20 edges, then the produces
vectors will be a basis for the parameter space of the squarepath. If
the squarepath has more then 20 edges then the 20 vectors produced will
be a linearly independent set spanning ``the first 20 dimensions'' of
the parameter space.
setting limits:
As already suggested, the parameter space for all the squarepaths with the
same combinatorial type is a subset of an integer lattice of dimension D,
where D is the total number of edges of the squarepath. Since we are
interested in keeping the signs of the edges the same, not every point in
the integer lattice parametrizes a squarepath of the same combinatorial
type. Roughly speaking, the actual parameter space is a full-dimensional
cone inside the lattice. You can specify a certain parallelopipeds inside the
integer lattice, by specifying the upper and lower limits of each of
the coordinates. Say you have chosen vectors V1 and V2. You can
use the integer entries below the set limits markers to
describe lower and upper limits L11 and L12 for V1. Likewise you
can specify upper and lower limits L21 and L22 for V2. The region
in the lattice you have specified is
C+ i1 V1 + i2 V2, where
- C is the current state
- i1 lies in [L11,L12]
- i2 lies in [L21,L22].
We just described this for 2 vectors, but you can specify parallelopipeds
using up to 10 vectors. The procedure generalizes in the obvious way.
The cutoff of 10 vectors is arbitrary but currently it
seems sensible to us.
The grand orbit plotter:
Once you select a parallelopiped in the parameter lattice, you
can plot the corresponding words by pushing the grand
orbit plot button. You should be careful not so specify
a huge parallelopied - the individual sidelengths multiply.
If some points in your parallelopiped do not correspond to
combinatorially identical squarepaths, they will be
ignored. Actually, we are still working out the bugs of the
grand orbit plotter. It is not quite ready for showtime.