penrose - draws quasiperiodic tilings
] [-foreground color
] [-window] [-root] [-mono] [-install] [-visual
] [-ncolors integer
] [-delay microseconds
] [-ammann] [-no-ammann]
program draws quasiperiodic tilings.
See Onoda, Steinhardt, DiVincenzo and Socolar in Phys. Rev. Lett. 60, #25, 1988
or Strandburg in Computers in Physics, Sep/Oct 1991.
This implementation uses the simpler version of the growth algorithm, i.e., if
there are no forced vertices, a randomly chosen tile is added to a randomly
chosen vertex (no preference for those 108 degree angles).
There are two essential differences to the algorithm presented in the
literature: First, we do not allow the tiling to enclose an untiled area.
Whenever this is in danger of happening, we just do not add the tile, hoping
for a better random choice the next time. Second, when choosing a vertex
randomly, we will take one that lies withing the viewport if available. If
this seems to cause enclosures in the forced rule case, we will allow
invisible vertices to be chosen.
Tiling is restarted whenever one of the following happens: there are no
incomplete vertices within the viewport or the tiling has extended a window's
length beyond the edge of the window horizontally or vertically or forced rule
choice has failed 100 times due to areas about to become enclosed.
Although quasiperiodic tilings are produced, the tiles themselves are not
penrose tiles (darts and kites). In contrast to penrose tiles, these tiles can
be arranged to form a periodic tiling.
accepts the following options:
- Draw on a newly-created window. This is the default.
- Draw on the root window.
- If on a color display, pretend we're on a monochrome
- Install a private colormap for the window.
- -visual visual
- Specify which visual to use. Legal values are the name of a
visual class, or the id number (decimal or hex) of a specific visual.
- -ncolors integer
- How many colors should be used (if possible). Default 64.
The colors are chosen randomly.
- -size integer
- How big the tiles should be. Default 40 pixels.
- -delay milliseconds
- How long (in 1/1,000,000'ths of a second) to wait between
drawing each tile. Default 10,000 or .01 seconds.
- Whether Ammann lines should be added.
- Display the current frame rate and CPU load.
- to get the default host and display number.
- to get the name of a resource file that overrides the
global resources stored in the RESOURCE_MANAGER property.
Copyright © 1996 by Timo Korvola.
Permission to use, copy, modify, and distribute this software and its
documentation for any purpose and without fee is hereby granted, provided that
the above copyright notice appear in all copies and that both that copyright
notice and this permission notice appear in supporting documentation.
Timo Korvola <firstname.lastname@example.org>, 1996.
Ability to run standalone or with xscreensaver
added by Jamie Zawinski