Problem 4

Write a program to draw a tree recursively.

Each branch forks in two, one sub-branch that goes clockwise and the other that goes counter-clockwise. The tree is drawn in multiple steps. Each step is defined by a tuple (x, y, alpha, l):

  • Starting point of the actual segment (x, y),

  • The direction of the segment alpha,

  • The length of the segment l.

The recursion stops when l < 10 and ends with a leaf.

The forking of a branch occurs as follows. The sub-branch that goes clockwise follows with l' = 0.8 * l and alpha' = alpha + PI / 5. The sub-branch that goes counter-clockwise follows with l'' = 0.6 * l and alpha'' = alpha  - PI / 3.

The starting point of the sub-branches is the end point of the preceding segment.

Start the program with x = SIZE / 2, y = SIZE, l_0 = 100 and alpha_0 = PI / 2, where SIZE is the size of the drawing canvas.