INTERESTING NOTES: Don't overlook the instructions in the file! They explain (somewhat briefly) how to fully appreciate the art work. Note that this is not merely a static lump of code: this is a fully parameterized program. Try fiddling with the parameters at the top of the file (they are explained below). THE OBFUSCATION: The obfuscation is in two parts: 1) the underlying logic of the program is somewhat mysterious, and 2) the lexical structure has been heavily manipulated to shorten the file as much as possible. There are no particularly obscure uses of the language, except possibly playing around with the order of operations: arguments may be pushed on the stack, and used later than would be expected. For example, a number of def's are deferred until they can be done in one batch. Also, the open and close square brackets are used as ordinary names to save some space since they are self-delimiting. WHAT IS IT: This is an example of a parquet deformation, the subject of Douglas Hofstadter's July 1983 Metamagical Themas column in Scientific American. The column is reprinted as chapter 10 of Hofstadter's book Metamagical Themas (Basic Books, 1985). The idea behind a parquet deformation is to take a regular tiling of the plane and deform it gradually: at any point, you have a regular tiling, but at each point, it is slightly different. The change is gradual and continuous. The idea borrows heavily from M. C. Escher's Metamorphosis pictures. This particular parquet deformation is original to me, and happens to lend itself quite nicely to generation by a small PostScript program. square-dance.ps is an example of a parquet deformation, the subject of Douglas Hofstadter's July 1983 Metamagical Themas column in Scientific American. The column is reprinted as chapter 10 of Hofstadter's book Metamagical Themas (Basic Books, 1985). The idea behind a parquet deformation is to take a regular tiling of the plane and deform it gradually: at any point, you have a regular tiling, but at each point, it is slightly different. The change is gradual and continuous. The idea borrows heavily from M. C. Escher's Metamorphosis pictures. This particular parquet deformation is original to me, and happens to lend itself quite nicely to generation by a small PostScript program. THE PARAMETERS EXPLAINED: See the HINT file. HOW THE PROGRAM WORKS: This particular parquet deformation can be analyzed into a number of different zig-zag lines, where the size and angle of the zigs and zags changes over time, giving the parquet its deformation. At the heart of the code is a procedure (called v) which takes a y coordinate, and four numbers on the stack, which get used as the arguments to two lineto's. This routine gets called repeatedly to make the zigs and zags, which eventually get stroked. The program loops along the strips, creating a clipping region around the strip, and translating the coordinate system so that the strips are joined up end to end. Then within each strip, two for loops create the lines across the strip and the lines along the strip.