penrose
XScreenSaver(r)                                   XScreenSaver(r)



NAME
       penrose - draws quasiperiodic tilings

SYNOPSIS
       penrose [-display host:display.screen] [-foreground color]
       [-background color] [-window] [-root]  [-mono]  [-install]
       [-visual  visual] [-ncolors integer] [-delay microseconds]
       [-redoDelay    seconds]    [-size    integer]    [-ammann]
       [-no-ammann]


DESCRIPTION
       The penrose 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  ran-
       domly chosen tile is added to a randomly chosen vertex (no
       preference for those 108 degree angles).

       There are two essential differences to the algorithm  pre-
       sented  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 invisi-
       ble 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.


OPTIONS
       penrose accepts the following options:

       -window Draw on  a  newly-created  window.   This  is  the
               default.

       -root   Draw on the root window.

       -mono   If   on  a  color  display,  pretend  we're  on  a
               monochrome display.

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


       -redoDelay seconds
               How long to wait between starting a completely new
               tiling.  Default 3 seconds.


       -ammann integer

       -no-ammann integer
               Whether Ammann lines should be added.


ENVIRONMENT
       DISPLAY to get the default host and display number.

       XENVIRONMENT
               to get the name of a resource file that  overrides
               the  global  resources stored in the RESOURCE_MAN-
               AGER property.

SEE ALSO
       X(X), xscreensaver(r), xlock(k)

COPYRIGHT
       Copyright (C) 1996 by Timo Korvola.

       Permission to use, copy, modify, and distribute this soft-
       ware 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.

AUTHOR
       Timo Korvola <tkorvola@dopey.hut.fi>, 1996.

       Ability  to  run  standalone or with xscreensaver added by
       Jamie Zawinski <jwz@jwz.org>, 10-May-97.



X Version 11                10-May-97             XScreenSaver(r)