# W2514 Emergence & Lindenmayer Systems (Part 4)

Within these castle walls be forged Mavens of Computer Science ...
— Merlin, The Coder

Fractal Tree

## Research

• Review those Lindenmayer Systems that require use of a stack (pop/push). One example is a "Fractal Tree".

## Experiment

### Getting Started

Modify the code from your previous experience.

Stack

Turtle objects are able to remember their current state and restore that state at a later point. The state is stored on a stack and is therefore in LIFO (Last In First Out) order. A turtle's state includes:

• location
• angle
• pen color
• pen width

Consider a Fractal Tree with the following translation mechanisms:

• 0: draw a line segment (ending in a leaf)
• 1: draw a line segment
• [: push position and angle, turn left 45 degrees
• ]: pop position and angle, turn right 45 degrees

When encountering a push or pop operation we can use the turtle's functionality as follows:

```           case "[":
turtle.push()
turtle.left(degrees:45)
case "]":
turtle.pop()
turtle.right(degrees:45)
```

Regardless of what occurs between a push and a pop, the turtle will be in the same situation it was in immediately prior to the push. This enables us to build very complex systems, such as Kev's Wispy Tree.

• Alphabet: "F", "X", "[", "]", "+", "-", "0", "1", "2", "3"
• Axiom: "FX"
• Production Rules:
• "F" -> "0FF-[1-F+F]+[2+F-F]"
• "X" -> "0FF+[1+F]+[3-F]"
• Geometric mechanism:
• "F" -> Forward
• "X" -> Forward
• "-" -> Right 25 degrees
• "+" -> Left 25 degrees
• "[" -> Push
• "]" -> Pop
• "0" -> Pen color: red:140, green:80, blue:60
• "1" -> Pen color: red:24, green:180, blue:24
• "2" -> Pen color: red:48, green:220, blue:48
• "3" -> Pen color: red:64, green:255, blue:64

## Exercises

Exercises
1. Add a Fractal Tree as one of the Lindenmayer Systems in your cycle
2. Add a Fractal Plant as one of the Lindenmayer Systems in your cycle
3. Add "Kevs Wispy Tree" as one of the Lindenmayer Systems in your cycle

Supplemental exercises:

1. Add buttons to alter the angles used in drawing the L-Systems