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