Biomorphs



This page describes the Biomorph application for the iPhone & iPod Touch available for free download at Apple's iTune store.

A biomorph is a computer generated 'tree' whose shape is defined by its genetic code. Each biomorph is described by 16 genes controlling its shape, size and color. Starting from a parent biomorph, eleven clones (children) are generated each identical to the parent but with a random mutation to a single gene.

By selecting the 'best' clone ('best' being truly a function of the user's taste) it becomes the parent of future generations and the breeding process is repeated. Multiple generations produce biomorphs attuned to the user's selection criteria.
A biomorph is a simple creature, it starts its growth as a vertical stalk. From the top of the initial stalk two branches grow. From each new branch two more branches grow and so forth. The parameters for the biomorph's growth are defined by 16 genes which are defined at the end of this help screen.
The biomorph shown above has the same genetic structure as more complex looking examples. It appears simple due its gene that determines the branching depth set to 5 which limits the visual complexity. It appears symmetrical due to the first branch angle set to 315 degrees (360-45) and its second branch angle set to 45 degrees. As each branch is formed it grows at 45 degrees from the previous branch producing a basic tree looking shape.
The biomorph concept was created by Richard Dawkins and described in his book The Blind Watchmaker . The iPhone application is a modified version of his program written for the iPhone and iPod Touch. More information about Richard Dawkins and his work can be found on his website .
User Interface

There are two display modes, single which displays a single biomorph and multiple which displays 12 biomorphs, usually a parent and 11 children.


Multiple Display Mode

When switching from single display mode the biomorph currently displayed on the screen becomes the parent and is drawn in the top left window of the multi-window display. Eleven new offspring are generated and displayed in the other windows, each cloned from the parent but with a single randomly mutated gene.

Hitting the default button loads the 12 default biomorphs. Hitting the saved button loads the previously saved 12 biomorphs. Hitting the random button generates 12 biomorphs with random values for all genes.


Touching any of the biomorphs selects it as the parent of the next generation and draws it in the top left window. It then breeds 11 children each with a genetic mutations and populates the remaining 11 windows.

The screenshot on the right shows the results of touching the top right biomorph in the previous screen. The pale blue biomorph becomes the parent of the next generation and 11 children are bred and displayed.

Note that if a child differs in color it must be identical in all other aspects since there is only one genetic difference between each child and its parent.

Hitting play will continuously breed each of the 12 biomorphs, randomly mutating a single gene on each generation. This continues until stop is hit. The '<' and '>' buttons scroll through the history of previous (and successive) generations.

The two screens below show the result of a dozen or so random generation. The left-hand screen shows the default biomorphs. Play was hit and the program run, generating slight differences in each of the biomorphs. After a short time play was halted. The right-hand screen shows the accumulation of the genetic drift in each biomorph.



The sym button toggles between symmetric and asymmetric modes. In symmetric mode the biomorphs are forced to breed symmetrically (Gene1 = Gene2, and Gene3 = Gene4) resulting in biomorphs that are mirror images about their vertical axis. The screen on the left contains 12 biomorphs identical to the ones shown directly above except that the sym button was hit.

Note that switching to symmetrical mode and then back to asymmetical mode does not immediately restore symmetry. As future generations are created assymetry will tend to creep back in.

Symmetry is not implemented as a gene in the biomorph. This is historical and based on Dawkins' original design. He forced all biomorphs to be symmetrical in an attempt to mimic nature. I feel the asymmetrical designs are more attractive.

The save it button saves the top left biomorph in the saved file. The saved file stores 12 biomorphs, each of which can be overwritten by the new entry. After hitting save it the new entry is displayed under the existing 12 saved biomorphs. Select a biomorph to be replaced or touch anywhere else on the screen to cancel.

For example, on the screen on the right, touching the green star would replace it with the yellowish creature at the bottom.


Single Display Mode

When switching from Multiple Display Mode the biomorph from the top left window is initially displayed. Hitting the biomorph breeds a new one with a single randomly mutated gene.

Hitting the default button loads the next default biomorph. Hitting the random button loads a randomly generated biomorph. Hitting the saved button loads the next saved biomorph. All 12 default and saved biomorphs can be loaded in sequence by subsequent button pushes.

The play button continuously breeds the biomorph with a single gene mutated each generation until the stop button is hit. The '<' and '>' buttons scroll through the history of previous (and successive) generations. The sym and save it buttons work as described above.

The detail button is only active in Single Display Mode. This toggles an array of Gene Buttons showing the current value of each of the 16 genes describing the displayed biomorph. As the biomorph breeds offspring the mutated gene is highlighted. Hitting any of the gene buttons brings up a slider to allow the value to be manually altered.

When a gene button is selected, the numbers to the left and right indicate the minimum and maximum values for that particular gene.

Hitting play with the gene buttons displayed slows the automatic breeding rate so that the individual genes updates are noticable.



Gene Descriptions

Gene 1 determines the angle of the first branch relative the the previous branch.
Gene 2 determines the angle of the second branch relative the the previous branch.
Gene 3 determines the length of the first branch relative the the previous branch.
Gene 4 determines the length of the second branch relative the the previous branch.
Gene 5 determines the relative sideways growth of the branch.
Gene 6 determines the relative upwards growth of the branch.
Gene 7 determines the level of branching (limited between 4 and 9).
Gene 8 determines the relative length of this level relative to the previous level.
Genes 9,10,11 determines the initial color components (red, green, blue).
Genes 12,13,14 determines the change to each color component relative to the previous branch (red, green, blue).
Gene 15 determines the initial branch thickness.
Gene 16 determines the change in thickness relative to the previous branch.