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: 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:
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 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.