import java.applet.Applet; import java.awt.*; import java.awt.event.*; import java.applet.*; import java.awt.geom.*; import java.math.*; public class DocumentOuter { Manager M; public DocumentOuter(Manager MM) { this.M=MM; } public void outerInfo() { String S="outer billiards window."; S=S+"\n\nThis is the outer billiards window. It lets you explore the dynamics of outer billiards on the penrose kite. The central feature of the window is that it computes convex polygons that are related to the dynamics, and lets you plot these polygons."; S=S+"\n\nYou activate the controls for this window by clicking the outer mode on the top red control panel at far left. Once you activate this mode, auxilliary controls pop up. You can read about the function of these controls by clicking on their info buttons."; S=S+"\n\n You interact with this window using mouse clicks and/or keyboard inputs:"; S=S+"\n\nbutton 1 or key-z: zoom in."; S=S+"\n\nbutton 2 or key-x: select a point."; S=S+"\n\nbutton 1 or key-c: zoom out."; S=S+"\n\nOnce you select a point, the window reacts in a way that is specified by the auxilliary control panels. The default (initial) mode is to do nothing at all."; M.D.setExplain(S); M.D.repaint(); } public void tileInfo() { String S="tile mode control"; S=S+"\n\nThe outer billiards window is set up to react when you click the middle mouse button on it. The x-key has the same effect. This control panel selects what happens when you click."; S=S+"\n\n1. edit mode: In this mode, the program only does something if you click on an already plotted tile. If you click on an already plotted tile, you can erase that tile, recolor it, print it out, or just see its coordinates."; S=S+"\n\n2. outer tile: In this mode, the program plots the outer billiards tile according to various options you select on the control panel beneath this one. You can just plot the tile or you can plot various portions of its orbit."; S=S+"\n\n3. return tile: In this mode, you need to select a point in the fundamental strip Sigma=R times [-2,2]. The program then draws the maximal convex polygon on which the first return map is defined for the specified number of iterates. Using the control panel below this one, you can specify whether you only consider the forwards return map, the backwards return map, or both. For intstance, if you use the 'symmetric' option and set the arrow keys to 3, then you get to see the maximal polygon on which the first 3 forwards and backwards iterates of the first return map are defined. When you select the 'first return' option on the display panel, what is plotted are the 'forward-1' first return tiles."; S=S+"\n\n4. atoms. In this mode, you also have to click in the strip Sigma. When you click, the computer plots the A-atom that contains the point, and also the B-atom that is its renormalization. The A-atoms are the maximal convex polygons which return in both directions to the renormalization set A_hat. The B-atoms are defined similarly."; S=S+"\n\nWhen you click one of the buttons in this control panel, you will see the new controls appear. You can learn about the function of these new controls using the question buttons on these controls."; M.D.setExplain(S); M.D.repaint(); } public void colorInfo() { String S="color control"; S=S+"\n\nGenerally, the plot color is given by the current color on the color selector. However, sometimes it is useful to control the colors of some basic objects in a different way. This control panel lets you do this for several of the objects. "; S=S+"\n\n1. kite: This controls the color of the Penrose kite."; S=S+"\n\n2. edge: This controls the outline colors of the newly plotted tiles."; S=S+"\n\n3. A-atom: This controls the color of the A-atoms that you plot."; S=S+"\n\n4. periodic: Sometimes a point in Sigma is not contained in A-atom but rather in a periodic tile. This controls the colors of these periodic tiles. The reason we do this is so that one can tell whether the plotted shape is an atom or a periodic tils."; S=S+"\n\n3. B-atom: This controls the color of the B-atom that is the renormalization of the plotted A-atom."; M.D.setExplain(S); M.D.repaint(); } public void markingInfo() { String S="auxilliary object control"; S=S+"\n\nThis control panel allows you to display and recolor various auxilliary objects in the outer billiards window. The left set of buttons lets you change the colors, and the right set of buttons lets you turn the display on/off."; S=S+"\n\nstrip: This is the strip Sigma=R x [-2,2]. This is the fundamental strip in the paper. In the paper, we consider the first return map to Sigma."; S=S+"\n\n2D box: This shows two regions. The big region is [0,24] x [0,2]. The inner region is [0,r] x [0,2] where r = 2+phi^(-3). These two regions play roles in our proof of the Near Reduction Theorem."; S=S+"\n\nxlines: These lines show the partition of [0,2] into the 18 levels corresponding to the renormalization set A_hat. The thick lines correspond to the basic intervals defining the renormalization map R. Here [0,2] is realized as the set of heights of horizontal lines in the top half of the strip Sigma."; S=S+"\n\nxcursor1: This records the height of the horizontal slice of the middle bottom window, which is the left polyhedron exchange window. To see this in action, click/drag the long blue bar and watch the outer billiards window."; S=S+"\n\nxcursor2: This records the height of the horizontal slice of the right bottom window, which is the right polyhedron exchange window. To see this in action, click/drag the long blue bar and watch the outer billiards window. The two horizontal slices shown are related by the renormalization map."; S=S+"\n\ntri: This displays the fundamental triangle T=T^+, and also the reflected triangle T^-."; S=S+"\n\nfirst return: This displays the forward-1 first return tiles. These are the maximal polygons in Sigma on which the first return map is well defined. Thanks to the Compactification Theorem, these tiles have a second definition: The map Theta: Sigma to Sigma_hat carries the polygons in Sigma to slices of the polyhedra in Sigma_hat. Turn on the strip2torus option on the links control panel and then click/draw the middle mouse button over these polygonal tiles. Note the color coorination between what happens in the outer billiards window and what happens in the left polyhedron exchange window."; S=S+"\n\np strips: This shows the strips which define the pinwheel map. We don't talk too much about these in the paper. They arise in the pinwheel lemma. To see these strips well, you should select a nearly transparent color."; S=S+"\n\ncursor: This records the current position on the outer billiards window."; M.D.setExplain(S); M.D.repaint(); } public void renormDisplayInfo() { String S="atom display"; S=S+"\n\nThis control panel allows you to display the atoms that arise in some of the theorems in the paper."; S=S+"\n\nnone: This turns the display off."; S=S+"\n\nfund: These are the tilings of the 6 triangles T_{ij}^{+/-} that arise in the Fundamental Orbit Theorem. Once you select this option, you use the arrow keys to select which triangle tiling is displayed. The upper set of arrows selects the triangle and the lower set selects the specific polygon within the tiling."; S=S+"\n\nfixed point: This shows the tiling of the region Q1 from the Fixed Point Theorem. Again, you can use the arrow keys to select a particular polygon within this tiling."; S=S+"\n\nreduce: This has to do with the Near Reduction Theorem. We show the tilings of the 23 PRST's from the Near Reduction Theorem. A PRST is a symmetric-1 first return tile whose first return images are no closer to the vertical axis. Amongst the atoms in this tiling, some are called taut and a few are called super-taut, as in the proof of the Near Reduction Theorem. You can change the colors on the control panel beneath this one to see these tiles highlighted."; S=S+"\n\nreduce2: This also has to do with the Near Reduction Theorem. This shows the super taut A-atoms and their B-atom renormalizations. Each B-atom has been divided back into A-atoms. The idea is to click on these new A-atoms and observe that renormalization sends them close to the origin."; M.D.setExplain(S); M.D.repaint(); } public void editInfo() { String S="edit control"; S=S+"\n\nThis control panel selects how the outer billiards window responds to a mouse click. As usual, you select points with the middle mouse button or the x-key. Nothing happens at all unless you click on a tile that you have already plotted."; S=S+"\n\nselect: This just prints out the coordinates of the selected tile."; S=S+"\n\nerase: deletes the selected tile."; S=S+"\n\nrecolor: changes the color of the tile, according to the color on the color selector."; S=S+"\n\nprint: This does nothing in the applet mode, and prints out the coordinates in program mode."; M.D.setExplain(S); M.D.repaint(); } public void plotInfo() { String S="tile plot control"; S=S+"\n\nIn this mode, the program responds to a middle click on the outer billiards window by trying to find the periodic tile that contains the point. If the period is too long, nothing is plotted. Otherwise, the tile is computed and this window gives you options on what gets plotted."; S=S+"\n\ntile: This plots the single tile."; S=S+"\n\nportion: this plots the first N iterates of the orbit. You use the blue arrow keys to specify N. You also can select the first or second iterate of the map"; S=S+"\n\nwhole: This plots the whole orbit. You should only use this option sparingly, as it is likely to overload the program. In particular, don't use it when you get a really small tile."; S=S+"\n\nstrip portion: this plots the first N iterates of the orbit that lie in the fundamental strip Sigma. You use the blue arrow keys to specify N. You also can select the first or second iterate of the map"; S=S+"\n\nstrip whole: this plots the intersection of the orbit with the strip Sigma. You should also be somewhat careful when using this option."; S=S+"\n\ntri portion: this plots the first N iterates of the first return map to the fundamental triangle. Again, you use the blue arrow keys to select N."; M.D.setExplain(S); M.D.repaint(); } public void iterInfo() { String S="iterate control"; S=S+"\n\nThis panel lets you decide whether to use the outer billiards map, or its second iterate."; M.D.setExplain(S); M.D.repaint(); } public void returnTileInfo() { String S="return tile options"; S=S+"\n\n. In this mode, you need to select a point in the fundamental strip Sigma=R times [-2,2]. The program then draws the maximal convex polygon on which the first return map is defined for the specified number of iterates. Using the control panel below this one, you can specify whether you only consider the forwards return map, the backwards return map, or both. For instance, if you use the 'symmetric' option and set the arrow keys to 3, then you get to see the maximal polygon on which the first 3 forwards and backwards iterates of the first return map are defined. When you select the 'first return' option on the display panel, what is plotted are the 'forward-1' first return tiles. This window gives you these 3 options."; M.D.setExplain(S); M.D.repaint(); } public void naturalInfo() { String S="color choice selector"; S=S+"\n\nWhen you plot the symmetric return tiles, you have two options for the colors:"; S=S+"\n\nnatural: This uses the color currently on the color selector."; S=S+"\n\nforced: This colors the tile red or blue according to whether or not one of the iterates, in the range selected, brings the tile closer to the origin. The red ones are the ones that get moved closer to the origin and the blue ones do not. When you select the symmetric-1 return tiles, the blue ones are the PSRT's mentioned in the paper in connection with the proof of the Near Reduction Theorem."; M.D.setExplain(S); M.D.repaint(); } public void atomInfo() { String S="atom plot control"; S=S+"\n\nThis panel lets you decide the nature of the atom plot."; S=S+"\n\natom: This plots an individual A-atom and its B-atom renormalization."; S=S+"\n\nchain: This plots the A-atom and the entire B-chain of the B-atom renormalization."; S=S+"\n\nLayer fill: In this mode you select a forward-1 return tile, and the program fills the entire thing with A-atoms and periodic tiles. It is a fairly slow routine with a lengthy calculation and not very useful."; S=S+"\n\npoly fill: in this mode, you select an already plotted tile, and the program fills it with A-atoms and periodic tiles."; M.D.setExplain(S); M.D.repaint(); } public void fundInfo() { String S="fundamental tile color control"; S=S+"\n\nIn the proof of the Fundamental Orbit Theorem we tile the small triangles T_{ij}^{+/-} with A-atoms and periodic tiles. This window lets you select the colors of the two kinds of tiles. Also, you can use the arrow keys to select a particular polygon in the tiling. This panel also lets you choose the color of the selected tile."; M.D.setExplain(S); M.D.repaint(); } public void fixedInfo() { String S="fixed point theorem color control"; S=S+"\n\nIn the proof of the Fixed Point Theorem we tile the region Q1 with A-atoms and periodic tiles. This window lets you select the colors of the two kinds of tiles. Also, you can use the arrow keys to select a particular polygon in the tiling. This panel also lets you choose the color of the selected tile."; M.D.setExplain(S); M.D.repaint(); } public void reduceInfo() { String S="near reduction theorem color control"; S=S+"\n\nIn the proof of the Near Reduction Theorem we tile the 23 positive symmetric return-1 tiles (PSRT's) with A-atoms and periodic tiles. Some of the A-atoms are called taut in the paper, and a few of the taut atoms are called super taut. This control panel lets you select the colors for these special polygons. Roughly, the taut atoms are the ones that are closest to the origin within their chain. The super taut atoms are the taut atoms such that the taut B-atom in the renormalized B-chain is farther from the origin than the original A-atom. The taut and super taut atoms are the ones we have to deal with specially in the proof of the Near Reduction Theorem."; M.D.setExplain(S); M.D.repaint(); } public void auxInfo() { String S="auxilliary buttons"; S=S+"\n\nThe rescale button resets the scaling on the outer billiards window."; S=S+"\n\nThe verify button doesn't really have any function, but served as a debugging tool. When this option is on, the computed periodic tiles are subjected to our rigorous verification process, whereby we check that the best golden approximation to the tile is truly a periodic tile. When it is on, and the tile is plotted, the words 'verified' should appear after the plot. This lets us know it is working correctly."; M.D.setExplain(S); M.D.repaint(); } }