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 >
Wrap
Text File
|
1989-10-19
|
4KB
|
80 lines
-----------------------------------
Griffeathian Cyclic Space Generator
-----------------------------------
Distribution:
This program may be distributed freely without any limitations
whatsoever.
Description:
Griffeathian cyclic space is a set of rules for a cellular automaton
as described in the August '89 issue of "Scientific American".
It is ruled by a set of relationships between pixels and their neighbours
which allow them to evolve complex patterns over a period of time. (This
is not unlike the ever popular "Life") In cyclic space, every pixel may
be in N different states, one colour corresponding to each state. These
states are numbered 0 to N-1 and are ordered cyclicly; the subsequent
state to k is k+1, if k = N-1 then the subsequent state is 0. A pixel
may progress to the next state if one of it neighbours is already in it.
(The neighbours to a pixel are the pixels to the right, left, top and
bottom) This rule is applied to each pixel during a computation cycle.
Operating the program:
You may run this program from either the CLI or Workbench. It opens
its own console window in the Workbench screen so you should preferably
use the Run command to launch it from the CLI. You may select the
default configuration or, alternatively, you will be prompted to enter
the screen width, height and depth. The depth is the number N as defined
in the description above. The program checks if it lives on a PAL or
NTSC Amiga when determining the maximum allowable height.
Next, you must enter a seed value. For each seed value, the program will
generate an unique random pattern with which the pixels are initialized.
The automaton may be interrupted by pressing CTRL-C. Note that the small
console window must be activated for this signal to get through.
The width and height determine the dimensions of the space, the space
can be thought of as a closed surface because the pixels of bottom edge
of the screen are made to neighbour the corresponding pixels at the top
edge, and likewise for the left and right edge.
Increasing the depth results in decreasing the chance of a pixel to
find one its neighbours in the next state. Choosing a large depth
typically results in a somewhat slower evolution of the space's state.
Observable phenomena:
Initially, the randomly initialized space will start to form "droplets".
These are regions of pixels in an uniform state. These regions grow
by encountering pixels in a subsequent state. These pixels become part
of the region, and will cause the region to increment its state.
In a more evolved space, what Griffeath calls "defects" might develop.
A defect comes into being when the sum of differences in state around
a closed loop of neighbouring pixels equals + or - N, and the difference
in state between individual neighbours in the loop is -1, 0 or +1.
Defects are recognizable as spiral-like growths.
About the program:
The cyclic space generator was written in assembly. The source requires
some special stuff I haven't bothered to include. Still, the basic
display algorithm uses only local macros and can be extracted.
The program features two special performance enhancing techniques.
Firstly, the colours assigned to the different states are ordered
in a special way which results in only needing to modify one
bitplane in order to change a pixel to the colour belonging to its
subsequent state. Secondly, the algorithm only bothers with pixels
that need to be incremented, and their neighbours. An array of boolean
values is pre-computed for the next cycle. These values indicate whether
the corresponding pixel is in need of being incremented next cycle. This
results in the algorithm speeding up and slowing down depending on how
much is actually happening.
Comments or bug reports may be directed to:
A.J.Brouwer
St-Eustatiusstr. 2
2612 HA Delft
The Netherlands
uusenet; hp4nl!neabbs!ajbrouw