For this model, in the simplest terms, a cell tries to be like cells that are its neighbors and unlike cells that are further away. This model is an approximation of a reaction-diffusion system and replicates many behaviors of that system. I have a vague recollection of this being referred to as the "Reed model", but I have no references to confirm this.
I define the 'neighbor' cells as those cells within a defined radius. I define the 'further away' cells as those within a second larger radius. These two areas define the two neighborhoods around each cell. |
The concentration of active cells is calculated for each neighborhood of each cell. The new value for the cell depends on the relationship between the two values. There are several possibilities.
If the inner concentration is greater than the outer concentration, the cell gets a new value of 63, otherwise it gets a new value of 0. Each concentration can be modified by a bias value. For this image, the inner concentration bias value varies from 0 to 1 along the y-axis and the outer concentration bias value varies from 0 to 1 along the x-axis. The inner radius is 3 and the outer radius is 6. |
![]()
To reduce the calculations needed per cell, my implementation precalculates and stores a mask which contains each
neighborhood. The mask is calculated by sampling each cell in a square array. The characteristic behavior of the
system results even when there is only one sample per cell, but attempting to smoothly vary either radius results
in notable artifacts due to the aliasing of the mask.
|
An inner radius of 3 and an outer radius of 6, with no bias applied results in this form.
|
If both radii are reduced by half and no bias is applied, this form results. This can further be scaled
down until the radii are on the scale of a single pixel, at which point the pattern breaks down into isolated
light and dark pixels.
The pattern differs only in scale.
|
When the outer radius is increased 7.5 and no bias is applied, the average pattern component size and
variation in component size is increased.
|
When the outer radius decreased to 4.5 and no bias is applied, the average pattern component size is the same
and the variation in component size is decreased.
|
When the inner radius is increased to 4.5 and no bias is applied, the average pattern component size is
increased and the variation in component size is decreased.
|
When the inner radius is decreased to 1.5 and no bias is applied, the average pattern component size is
decreased and the variation in component size is increased.
|
Modifying the circular neighborhoods to ellipses results in a squashed version of the same pattern.
Each ellipse in form [x radius, y radius], are [3,1.5] for the inner and [6,3] for the outer neighborhood.
|
Turning the outer ellipse 90 degrees results in directional stripes.
Each ellipse in form [x radius, y radius], are [1.5,3] for the inner and [6,3] for the outer neighborhood.
|
Multiplying the ellipse radii by a continuously varying value increasing from 0.5 to 3.5 on the x-axis results
in this form.
|
Rotating the ellipses by a continuously varying angle increasing from 0 to 180 on the x-axis results
in this form. From angle 180 to 360, the pattern repeats.
There is an abrupt transition from horizontal to vertical stripes at 45 and 135 degrees. |
|
All of these simulations were run on a square grid. The abrupt transition in result seen when the ellipses are rotated may be an artifact resulting from this. If this is the cause, then running the simulation on a rotated square grid should result in a shifting of the transition angles. Running the simulation on a hexagonal grid may also produce interesting behavior. Migrating the codebase over to a language with much larger access to memory is needed for some possible future experiments. How would a simulation run on a grid of randomly placed cells, for instance. The ability to produce much larger images would also be a good thing. While the persuit of new understanding is the basis for science, there are often remarkably interesting and artistic images that can result. These images are an important result, as they allow others a view into what the work is all about. |

For this model, in the simplest terms, a cell tries to be like cells that are its neighbors and unlike cells that are further away. This model is an approximation of a reaction-diffusion system and replicates many behaviors of that system. I have a vague recollection of this being referred to as the "Reed model", but I have no references to confirm this.
The concentration of active cells is calculated for each neighborhood of each cell. The new value for the cell depends on the relationship between the two values. There are several possibilities.

To reduce the calculations needed per cell, my implementation precalculates and stores a mask which contains each
neighborhood. The mask is calculated by sampling each cell in a square array. The characteristic behavior of the
system results even when there is only one sample per cell, but attempting to smoothly vary either radius results
in notable artifacts due to the aliasing of the mask.
An inner radius of 3 and an outer radius of 6, with no bias applied results in this form.
If both radii are reduced by half and no bias is applied, this form results. This can further be scaled
down until the radii are on the scale of a single pixel, at which point the pattern breaks down into isolated
light and dark pixels.
When the outer radius is increased 7.5 and no bias is applied, the average pattern component size and
variation in component size is increased.
When the outer radius decreased to 4.5 and no bias is applied, the average pattern component size is the same
and the variation in component size is decreased.
When the inner radius is increased to 4.5 and no bias is applied, the average pattern component size is
increased and the variation in component size is decreased.
When the inner radius is decreased to 1.5 and no bias is applied, the average pattern component size is
decreased and the variation in component size is increased.
Modifying the circular neighborhoods to ellipses results in a squashed version of the same pattern.
Turning the outer ellipse 90 degrees results in directional stripes.
Multiplying the ellipse radii by a continuously varying value increasing from 0.5 to 3.5 on the x-axis results
in this form.
Rotating the ellipses by a continuously varying angle increasing from 0 to 180 on the x-axis results
in this form. From angle 180 to 360, the pattern repeats.