The purpose of this project is to represent the L-systems in Python and simulate the growth of trees.

By adjusting parameters, different trees are generated and a forest is drawn.



An L-system, also known as the Lindenmayer system, is a kind of parallel rewriting system and formal grammar. An L-system consists of an alphabet of symbols that can be used to make strings, a collection of production rules that expand each symbol into a larger string of symbols, an initial “axiom” string, and a method for translating the generated strings into geometric structures. Aristid Lindenmayer, a Hungarian theoretical biologist, and botanist at the University of Utrecht introduced and developed L-systems in 1968.

  • Lindenmayer used L-systems to model the growth processes of plants
  • To characterize the behavior of plant cells.


A recursive system

The rule of the L-systems is rewriting. If we start the process with the letter b (the premise) and follow it through in time, we see a certain pattern emerges by following the rewriting rules. We can see that A can go into AB, and B can only go into A.


State of the art

We can see that there are already many references to L-systems in architecture. These two projects are supported by a tree structure and enhance its aesthetics.





There are five factors controlling the result of code:

  • levels: control the number of loops
  • branches: control how many branches are generated at a time
  • branches scale factor: control the length of branches
  • rotate value: control the angle of rotation of branches
  • rotate axis: control the direction of rotation of branches



Branches scale factor

Rotate value

Rotate axis


Shape Subdivision


References – Mesh Subdivision


Python Code


L – Systems + Mesh Subdivision


L-systems is a project of IAAC, Institute for Advanced Architecture of Catalonia developed at MAA02, Python in 2021 by Aniket Sonwane, Aqeel Sourjah, Chirag Shah, Xingyu Zhang and Jiaqi Sun. Faculty : Angel Munoz