home *** CD-ROM | disk | FTP | other *** search
/ The Fred Fish Collection 1.5 / ffcollection-1-5-1992-11.iso / ff_disks / 200-299 / ff255.lzh / CyclicSpace / ReadMe < prev    next >
Text File  |  1989-10-19  |  4KB  |  80 lines

  1. -----------------------------------
  2. Griffeathian Cyclic Space Generator
  3. -----------------------------------
  4.  
  5.  
  6. Distribution:
  7.   This program may be distributed freely without any limitations
  8.   whatsoever.
  9.  
  10.  
  11. Description:
  12.   Griffeathian cyclic space is a set of rules for a cellular automaton
  13.   as described in the August '89 issue of "Scientific American".
  14.   It is ruled by a set of relationships between pixels and their neighbours
  15.   which allow them to evolve complex patterns over a period of time. (This
  16.   is not unlike the ever popular "Life")  In cyclic space, every pixel may
  17.   be in N different states, one colour corresponding to each state.  These
  18.   states are numbered 0 to N-1 and are ordered cyclicly; the subsequent
  19.   state to k is k+1, if k = N-1 then the subsequent state is 0.  A pixel
  20.   may progress to the next state if one of it neighbours is already in it.
  21.   (The neighbours to a pixel are the pixels to the right, left, top and
  22.   bottom)  This rule is applied to each pixel during a computation cycle.
  23.  
  24.  
  25. Operating the program:
  26.   You may run this program from either the CLI or Workbench.  It opens
  27.   its own console window in the Workbench screen so you should preferably
  28.   use the Run command to launch it from the CLI.  You may select the
  29.   default configuration or, alternatively, you will be prompted to enter
  30.   the screen width, height and depth.  The depth is the number N as defined
  31.   in the description above.  The program checks if it lives on a PAL or
  32.   NTSC Amiga when determining the maximum allowable height.
  33.   Next, you must enter a seed value.  For each seed value, the program will
  34.   generate an unique random pattern with which the pixels are initialized.
  35.   The automaton may be interrupted by pressing CTRL-C.  Note that the small
  36.   console window must be activated for this signal to get through.
  37.   The width and height determine the dimensions of the space, the space
  38.   can be thought of as a closed surface because the pixels of bottom edge
  39.   of the screen are made to neighbour the corresponding pixels at the top
  40.   edge, and likewise for the left and right edge.
  41.   Increasing the depth results in decreasing the chance of a pixel to
  42.   find one its neighbours in the next state.  Choosing a large depth
  43.   typically results in a somewhat slower evolution of the space's state.
  44.  
  45.  
  46. Observable phenomena:
  47.   Initially, the randomly initialized space will start to form "droplets".
  48.   These are regions of pixels in an uniform state.  These regions grow
  49.   by encountering pixels in a subsequent state.  These pixels become part
  50.   of the region, and will cause the region to increment its state.
  51.   In a more evolved space, what Griffeath calls "defects" might develop.
  52.   A defect comes into being when the sum of differences in state around
  53.   a closed loop of neighbouring pixels equals + or - N, and the difference
  54.   in state between individual neighbours in the loop is -1, 0 or +1.
  55.   Defects are recognizable as spiral-like growths.
  56.  
  57.  
  58. About the program:
  59.   The cyclic space generator was written in assembly.  The source requires
  60.   some special stuff I haven't bothered to include.  Still, the basic
  61.   display algorithm uses only local macros and can be extracted.
  62.   The program features two special performance enhancing techniques.
  63.   Firstly, the colours assigned to the different states are ordered
  64.   in a special way which results in only needing to modify one
  65.   bitplane in order to change a pixel to the colour belonging to its
  66.   subsequent state.  Secondly, the algorithm only bothers with pixels
  67.   that need to be incremented, and their neighbours.  An array of boolean
  68.   values is pre-computed for the next cycle.  These values indicate whether
  69.   the corresponding pixel is in need of being incremented next cycle.  This
  70.   results in the algorithm speeding up and slowing down depending on how
  71.   much is actually happening.
  72.  
  73.  
  74. Comments or bug reports may be directed to:
  75.   A.J.Brouwer
  76.   St-Eustatiusstr. 2
  77.   2612 HA  Delft
  78.   The Netherlands
  79.   uusenet; hp4nl!neabbs!ajbrouw
  80.