The critical program displays a self-organizing critical system
that gradually emerges from chaos.
critical performs a simulation on a two-dimensional array of
integers. The array is initialized to random values. On each
iteration, it draws a line to the array position with the greatest
value. It then replaces that location and the eight neighboring
locations with randomly-selected values.
The lines are initially random, but over time a chaotic
self-organizing system evolves: areas of the screen which happen to
have lower values are less likely to be updated to new values, and so
the line tends to avoid those areas. Eventually, the histogram of
changes approaches the power-law curve typical of such systems.
The simplest documented self-organizing system is the one-dimensional
equivalent of critical.
I heard about this algorithm second-hand: apparently there was an
article in Scientific American describing it sometime in 1997.
OPTIONS
critical
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.
-delay usecs
Number of microseconds to wait after drawing each line.
-random boolean
Whether to use randomly selected colours rather than a cycle around
the colour wheel.
-offset integer
The maximum random radius increment to use.
-ncolors integer
How many colors should be allocated in the color ramp (note that this
value interacts with offset.)
-trail integer
Length of the trail: between 5 and 100 is nice.
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.
Permission to use, copy, modify, distribute, and sell this software
and its documentation for any purpose is hereby granted without fee,
provided that the above copyright notice appear in all copies and that
both that copyright notice and this permission notice appear in
supporting documentation. No representations are made about the
suitability of this software for any purpose. It is provided "as is"
without express or implied warranty.
AUTHOR
Martin Pool <mbp@humbug.org.au>, 1998-2000. Based in part on the
XScreenSaver code by Jamie Zawinski <jwz@jwz.org>.