Amorphous Object Simulation
Jeremy Randolph
I developed a simple way to simulate amorphous systems with
adjustable parameters that allow the simulation to
dramatically change.
I originally wanted to use cellular automata to accomplish
this goal, specifically by extending Conway’s game of
life to 3 dimensions. This proved to be rather clunky
when a large number of cells were turned on. I then moved
to a more particle based system, which could be updated more
frequently giving a more fluid look. While the individual cells
in this project are aligned to a regular grid, children are only
influenced by a single parent cell.
I make processing and updating the object efficient by
keeping a linked list of “on” cells. Each time a cell has
children, I consult a hash table that keeps track of which
points already have on cells. If an empty spot is found, I
update the hash table, and insert the cell. This keeps the
object from filling up with hidden cells.
Click to watch videos of the pictures
User Guide
The mouse can be used to rotate, scale and move
the object. To enter the rotation mode press "r".
For the scale mode press "s", and for the move
mode press "m".
When running the program there are several
parameters that can be adjusted. To select
and adjust the parameters use the arrow keys.
Note that the parameter settings appear in the
console.
X Range, Y Range, Z Range
When a cell reproduces, it sends its children
to random locations around it. These numbers
dictate the range the children can be sent to.
X Push, Y Push, Z Push
After deciding where children are sent, these
numbers will adjust the final location of each child.
These numbers can be used to define general directions
for the mass to move.
Travel Time
A shorter travel time causes individual cells to move
faster to their destinations. A longer travel time will
cause the cells to move slower to their destination.
Note, that if the travel time is too long, the cell
may not be in the proper place when it reproduces, or dies.
This will cause the cell to snap to it's final position,
effectively removing any aesthetic benefit of lengthening the
travel time.
Changes per Step
This dictates how many cells are considered each cycle.
When a cell is considered, it can either die or
reproduce.
Atom Scale
Adjusts the scale of each individual cell.
Growth Rate
How many children each cell will have (provided it
reproduces).
Too Old Age
Each time a cell reproduces, its children have a chance
to age. When a child becomes "too old" it will no longer
reproduce when called.
Change to Age
How often a child will age when born.
Death Length
How long a dying cell will remain visible.
Max Number
The maximum number of cells allowed (includes
living and dying cells).
Presets
A short list of preset settings can be accessed by
pressing "p". Scroll up and down with the arrow keys, and
select a preset by pressing "p" again.
For an executable click here
For the source code click here