Last updated Sep 2025
Code to create an intuitively-drawn I and T, as well as triangle, pentagon, and circle (i.e., any polygon) can be found here. Below are the images generated from running the above.
For all below L-systems except the probabilistic L-system, the code that dictates the Turtle’s actions for each character in a string can be found here. The code that dictates the Turtle’s actions for each character for a probabilistic L-system can be found here.
This L-System is a modification of the Hilbert curve with slightly curved angles.
The code containing the production rules is listed under the function initGarden()
in the ExampleLSystemDesigns file.
Below are iterations for $n=1$ through $n=6$ (as the curve does not become visually interesting until higher $n$).
This L-System is inspired by the $n$-flake fractal and uses as its base a hexagon.
The code containing the production rules is listed under the function initTile()
in the ExampleLSystemDesigns file.
Below are iterations for $n=1$ through $n=4$.
This L-System is also based on the Hilbert curve and uses the “node-replacing” technique to generate a FASS on a 4-by-4 starting grid.
The code containing the production rules is listed under the function tile2()
in the ExampleLSystemDesigns file.
Unfortunately, the curve is not fully self-avoiding or space-filling for reasons I don’t fully understand.
This L-System uses a combination of probabilistic rule-following and probabilistic length and angle parameters.
At each iteration, the plant either grows the stem, a pair of leaves, or a “berry.”
The angle of the leaves and the length of the stem can be random as well.
The code containing the production rules is listed under the function plant()
in the ExampleLSystemDesigns file.
In the below images, the center plant does not have random angle/distance variation, while the left and right plants do.
The designs for the garden, tile, and plant L-systems were fabricated on the laser cutter.
Their images are below.