Originally developed by Aristid Lindenmayer in 1968, an L-System is a formalism
to generate self-similar structures. Although, L-Systems are capable of generating famous fractals
like the Sierpinski Triangle (Axiom: FXF--FF--FF, F → FF, X →
--FXF++FXF++FXF--, angle = 60) or the
Gosper Curve (Axiom: FX, X → FX-FY--FY+FX++FXFX+FY-, Y
→
+FX-FYFY--FY-FX++FX+FY, angle = 60),
first and
foremost, they were developed to model the growth of plants.
The algorithm itself is pretty simple: The model is represented by a string, in which the axiom
represents the initial state of the model. On each iteration, every character of the current string
(initially, this is the axiom), is replaced by a string of characters that is defined by the
according reproduction rules. E.g. Axiom: F, F-Reproduction: F → FX,
X-Reproduction: X → F- leads
to the following series of strings: F, FX, FXF-, FXF-FX-, FXF-FX-FXF--, … .
The visualization is generated by interpreting the current string as a turtle-graphic. "F"
means:
Move forward by a constant length and draw a line; "f" means: Move forward by the same
constant
length and don't draw a line; "+" means: Turn right by a given angle, "-" means:
Turn
left by the
same angle. The symbol "[" stores the current position and angle, whereas the symbol
"]" restores the
last position and angle, i.e. jumps back to the last "[". Every other character is simply
ignored.
For a deep dive in L-Systems turn to The
Algorithmic Beauty of Plants
by
Przemysław Prusinkiewicz and Aristid Lindenmayer.
In the visualization to the right, blue represents the current axiom, while dark-grey foreshadows
the first iteration. The visualization dynamically adapts to the current axiom, reproductions and
angle.