page logo, three tetrahedra
intersecting a sphere
home
research gallery
  • origami
  • programming
  • biology inspired
  • aquarium
    bug evolution
    cladistics
    fossils
    patterns
    plant collection
  • photography
  • number notes
  • rants
  • games
  • misc


  •   Biological Patterns
    the two neighborhoods. 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.

    basic model generated image. 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.

    mask with 256 samples per cell.mask with 1 sample per cell. 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.

    Copyright © Darren Abbey.