mirror of
https://github.com/IanDarwin/OpenLookCDROM.git
synced 2026-01-31 05:53:13 +00:00
71 lines
4.2 KiB
Plaintext
71 lines
4.2 KiB
Plaintext
I've written a recreational CAM-6 simulator (Tofoli & Margolis's
|
|
Cellular Automata Machine) and ported it to HyperLook (the user
|
|
interface development system I'm working on at Turing). It displays
|
|
animated cellular automata that you can edit in real time with the
|
|
mouse! And it comes with a free Lava Lamp!
|
|
|
|
The Cellular Automata Machine simulator (a SPARC binary with a bunch
|
|
of PostScript and data files) and the HyperLook runtime system are now
|
|
available for anonymous ftp! HyperLook and the CAM simulator run
|
|
under OpenWindows Version 3 on color SPARC workstations. They're
|
|
available for anonymous ftp from turing.com, in the file
|
|
"pub/CAM.tar.Z", or ftp.uu.net, in the file "packages/NeWS/CAM.tar.Z".
|
|
You will also need to retrieve the HyperLook runtime environment, from
|
|
the same directory, with the name "HyperLook1.5-runtime.tar.Z". There
|
|
are several text and PostScript files explaining HyperLook, and other
|
|
HyperLook demos and applications (including SimCity, which I've also
|
|
ported to HyperLook). Install and run HyperLook (set your $HLHOME
|
|
enviornment variable), uncompress and un-tar CAM.tar.Z into a
|
|
directory, go there, and type "cam". Press the "Help" key at the
|
|
buttons and graphics to learn how to work the user interface.
|
|
|
|
Here are some highlights of my Cellular Automata Machine simulator:
|
|
|
|
The user interface is a HyperLook stack (kind of like PostScript
|
|
HyperCard for Unix). The simulator is written in C, and uses a
|
|
look-up table in the same format as the CAM-6. The simulator
|
|
implements several different neighborhoods, and several favorite hard
|
|
wired rules. The rules (that aren't hard wired in C) are specified in
|
|
Forth (I use wmb's SPARC Forth, and have written some code that lets
|
|
me define rules in the same language as used in T&M's "Cellular
|
|
Automata Machines"). Forth compiles the rules and writes out lookup
|
|
tables that are read by the simulator. The simulator animates on the
|
|
screen very quickly by using shared memory. There's a button to tile
|
|
the screen root background with the current pattern, which is worth
|
|
its weight in LSD! You can draw on the cells with the mouse as they
|
|
animate! It comes with a whole bunch of interesting rules. Each rule
|
|
has a brief (if not cryptic) description, and a list of pre-defined
|
|
initial configurations that work will with the rule. You can copy the
|
|
cells onto the clipboard and paste them into the drawing editor
|
|
(included with HyperLook) to edit or print them. You can also paste
|
|
structured PostScript drawings from the drawing editor into the cells!
|
|
(My favorite trick is pasting usenix facesaver images into hglass.)
|
|
|
|
One of the neatest built-in rules is Rudy Rucker's "Eco" rule (maybe
|
|
he called it something different, but I think he came up with the
|
|
idea). It runs "Anneal" in one plane, and either "AntiLife" or
|
|
"Brian's Brain" in the other, depending on the "Anneal" bit. It uses
|
|
AntiLife (the bitwise complement of Life) instead of regular Life,
|
|
because then the interaction with Brain's Brain along the annealing
|
|
edges is, shall I understate, somewhat more intense! (not to mention
|
|
the 5 bits of echo!) This rule looks really cool when started with a
|
|
symetric configuration! Then you can switch back and forth between
|
|
symetry-preserving rules, and generate all kinds of interesting screen
|
|
backgrounds! Eco is a great rule to display in the Lava Lamp view! (A
|
|
wee simulated lava lamp desk accessory that displayes the automata in
|
|
an appropriately shaped window.) Another rule that looks good in the
|
|
Lava Lamp is "Heat", which is eight neighbor heat diffusion: sum the
|
|
eight neighbors (plus a global heat change constant) and divide by
|
|
eight (by shifting). The global heat change constant causes the heat
|
|
of the entire system to rise or fall, and when a cell goes below 0 or
|
|
above 255, it wraps around to the opposite heat, causing chaotic
|
|
psychodellic churning and boiling! A modification I made to this rule,
|
|
"DHeat", takes the remainder after dividing by 8, and adds it into the
|
|
next sum (i.e. just keeps the low 3 bits that would be thrown away
|
|
around for the next sum), resulting in a *much* more accurate heat
|
|
diffusion simulation, with a wonderful dithered appearance. The
|
|
dithered heat diffusion (which doesn't preserve symetry) makes
|
|
*really* keen screen backgrounds!
|
|
|
|
-Don
|