Author: Zsófia Ruttkay Version: 1.0 Date: 25.2.2009
In nature you often see that parts of a structure are smaller - exact or slightly changed - copies of the entire structure. Think of branching trees, snow-flakes or clouds.
The basic principle is self-similarity which can be programmed elegantly by using recursion .
Self-similarity
| Two circles inside one
The recursive production rule is to draw two half-sized circles in the 'parent'. | ellipse() |
|
Same rule as above, but the location of the smaller circles is changed. | |
|
Watch out! Is this structure self-similar? Could you alter the code to produce a recursive one? | |
|
How about this one? | |
|
Explain why the previously seen logarithmic spiral is a recursive structure. | |
|
Same as the previous structure, but triangles are drawn. Looks like a shelf. |
Trees
| Tree by D. Shiffman
A fully symmetrical tree. | pushMatrix(), popMatrix(), translate(), rotate() |
| Asymmetric tree
.. with different angles for left and right branching. | |
| Asymmetric tree driven by mouse
Mouse Y defines basic branching, mouseX the amount of asymmetry. | |
| Tree with leaves
Square leaves added to Tree0. | |
| Naked tree of Pythagoras
Left and right branching angles add up to PI/2. What is the scale? | |
|
As above, but left and right branch scales differ. | |
| Tree with random variation
| |
| Make a forest
On mouse-click a new tree is planted. Size is proportional to y location. | |
| Symmetrical, generalized Pythagoras tree
Angle is decided by mouseX. | |
| Asymmetrical tree or Pythagoras
| |
| A different visualisation of the tree of Pythagoras
| |
| Tree of Pythagoras with alternating left-right angles
Create variants with moving the mouse. Looks like a fern! |