logo
Free, unlimited AI code reviews that run on commit
git-lrc git-lrc GitHub Install Now We'd appreciate a star git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt

penrose - draws quasiperiodic tilings

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                                   6.08 (10-Oct-2023)                                    penrose(6x)

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

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_MANAGER property.

       XSCREENSAVER_WINDOW
               The window ID to use with --root.

Name

       penrose - draws quasiperiodic tilings

Options

penrose accepts the following options:

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

       --root  Draw on the root window.

       --window-idnumber
               Draw on the specified window.

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

       --install
               Install a private colormap for the window.

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

       --ncolorsinteger
               How many colors should be used (if possible).  Default 64.  The colors are chosen randomly.

       --sizeinteger
               How big the tiles should be.  Default 40 pixels.

       --delaymilliseconds
               How  long  (in 1/1,000,000'ths of a second) to wait between drawing each tile.  Default 10,000 or
               .01 seconds.

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

       --fps   Display the current frame rate and CPU load.

See Also

X(1), xscreensaver(1), xlock(1)

Synopsis

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

       [--fps]

See Also