Elm – fun with L-System (Part 7)

Series:

  1. Algae
  2. Pythago­ras Tree
  3. Can­tor Dust
  4. Koch Curve
  5. Sier­pin­ski Triangle
  6. Dragon Curve
  7. Frac­tal Plant (this)

Last time out we imple­mented the Dragon Curve exam­ple from the L-System wikipedia page. Now, we’re finally at the end of our journey, let’s see how we can implement the Fractal Plant example in Elm.

 

Example 7 : Fractal Plant

Let’s start by defining our L-System:

image

What’s interesting about the Fractal Plant is that it combines elements from Pythagoras Tree (the use of a stack) and other L-Systems we looked at recently.

image

 

Here’s how it looks, by gen 7 the plant looks pretty good!

fractal_plant

 

In fact, with the implementation we ended up with, we can use it to support any number of L-Systems so long:

  • ‘F’ is the only symbol that means “draw forward”
  • we can programmatically change the angle for ‘–’ and ‘+’ (easy!)

with that, let’s take a couple of the examples from LSystemBot’s tweets and see them in action!

 

Example 7.1

image

 

l-system-bot-01

 

Example 7.2

image

l-system-bot-02

 

Example 7.3

image

l-system-bot-03

 

So that’s it guys, hope you’ve enjoyed this series! Please let me know via the comments if you like to see more mini-series like this one.

 

Live Demo (here)

Use LEFT and RIGHT arrow keys to evolve/devolve the L-System.

Source Code (here)

 

 

Links

Leave a Reply

Your email address will not be published.