The latest thing that I have discovered is a applet that does something very similar to polyhedra. Click here to see it. It uses "dual" and "stellate" which match my functions "dual" and "tri." It includes "half truncation" which would be the dual of "quad" for me. It does "snub" which would be the dual of "penta" for me. Here are its other functions and what they match in my applet:
"corner truncation" = "dual-tri-dual"
"expansion" = "quad-quad-dual"
"great Rhomb" = "quad-tri-dual"
The history of how this applet came to be: I was coloring in one of the "Images" books by Roger Burrows with my kids when I noticed that most of the patterns were based on transformations of a few number of tilings. (One of them is hqqd(6-99)t(4-99)pd(4-99)td.) I looked at the transformations and found that most could be generated by using the controls "dual", "tri", and "quad" in the applet above. Later I asked Craig Kaplan if he had seen any such program. He pointed me to George Hart's polyhedra page which explains Conway's notation for applying similar operations to polyhedra. (Unfortunately I don't seem to be able to get the page to work.) This gave me the additional operation "penta", and restricting the polygons that "tri" operates on. To translate my notation to Conway's: d=>d, t=>k, q=>j, p=>g, and the order is reversed.
Things to try: Hit "dual" several times to make the tiling nicer. Sometime I would like to add other operations on the tilings: I would like to add a left and right orientation for "penta." I would like to add a transformation called "propeller" from George Hart's webpage which is the only operation which he gave that cannot yet be done with this applet. I added "inset" after I worked backward from some tilings that I wanted to create and discovered that I could produce them if I added this new function. Thanks to David Eppstein for catching an error with the "inset" operation. I also have some other ideas that aren't yet solidified. The code for the program is available. It is quite a mess as I am not so talented with Java. I need to put in error checking. You may need to restart if you use more than 2000 line segments in the fundamental block. I need to use a dynamic way to store the info so that it can expand as needed. In addition, if the tiles get too small, the vertices coincide and bad things happen. I would like it if you could ask the polygons to all become regular - or as close as possible. Maybe specify which n-gons you want regular? Also - sometimes it is possible to have adjacent tiles sharing several edges. (I'm not sure if this is a bug or a feature. For example: std(8-99)q) If there is anyone interested who is skilled at Java - help!
We can get all but one of the Archimedean Tilings by some transformation: s, h, hd, std, spd, hqqd, hdtd, hqd, hpddd, hqtd. Note that these last two aren't exact. Also note that taking the dual two extra times helps hpddd look closer, but doesn't help hqtd. Note that "d", "t", and "q" will preserve all the symmetries of the original tiling. "p" will preserve the rotational symmetry, but not the line symmetry. Thus we can see that the Archimedean Tiling 220.127.116.11.3 can't be created by starting with 18.104.22.168 or 6.6.6 as these both have centers of rotation that are more than two.
Some other of my favorite ones are
Others are sqp, hqqqdt, hpdd, and sqtqqq.
If you just see a grey rectangle, you don't have the latest Java reader. You can download the browser Java Plug-in at http://www.java.com Click the button saying "Free download."
There are a few other people who also have tiling applets out there. Check out the Tyler applet that lets you place regular polygons. It also does hyperbolic tilings as does the Hyperbolic applet.