**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. | ||

| ||

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! |