L-systems are very simple and elegant grammars (a set of rules and symbols) originally developed by biologist Aristid Lindenmayer to describe the growth of plants and trees.
These as we can see can lead to very beautiful figures as above!
The Lindenmayer system is recursive in nature which leads to self-similarity and hence fractal like structures. Plant models and natural-looking organic forms are similarly easy to define, as by increasing the recursion level the form slowly ‘grows’ and becomes more complex.
The components of a L-system are:
A) The alphabet, which is a finite set V of formal symbols or characters, generally they are taken to be letters A,B,C etc. These are the variables as they can be replaced. A set of symbols which will remain fixed are constants. These may be represented as another finite set.
B) The start, axiom or initiator ω, it basically is a string of symbols from V. If suppose V = {a,b,c} then ω can be aabc, abcc, abcab etc. There are many possibilities. This defines the initial state of the system.
C) Production rules, P that define how a variable can be replaced by a combination of variables and constants.
The rules of the L-system grammar are applied iteratively starting from the initial state. As many rules as possible are applied simultaneously, per iteration. This is the distinguishing feature of a L-system from a language.
There are many examples of the same that lead to very beautiful structures!
Some are:
A) Cantor Dust:
variables : A B
constants : none
start : A {starting character string}
rules : (A → ABA), (B → BBB)
Let A mean “draw forward” and B mean “move forward”.
Put in a different manner. We could say that a cantor dust fractal may be reconstructed using string rewriting using an initial cell {1} and then iterating the below rules.
Thus we would get the fractal as :
B) Fractal Tree:
variables : X F
constants : + −
start : X
rules : (X → F-[[X]+X]+F[+FX]-X),(F → FF)
angle : 25°
Here, F means “draw forward”, – means “turn left 25º”, and + means “turn right 25º”. X does not correspond to any drawing action and is used to control the evolution of the curve. For n=6 the following figure may be generated.
C) The Sierpinski Triangle:
variables : A B
constants : + −
start : A
rules : (A → B−A−B),(B → A+B+A)
angle : 60°
Here, A and B mean both “draw forward”, + means “turn left by angle”, and − means “turn right by angle”. The angle changes sign at each iteration so that the base of the triangular shapes are always in the bottom (they would be in the top and bottom, alternatively, otherwise).
Evolution for n = 2, n = 4, n = 6, n = 9
Other curves include the famous Koch Curve, Dragon Curve, Penrose Tilings etc.
Good places to do initial research on L-Systems:
1. Wikipedia
2. Fractinct L-system True Fractals, A tutorial by William Mcworter.
3. Fractals and Cellular Automata. by Daniel Shiffman.
4. Fractals and Recursion in the Nature of Code.
I would try to follow these initial posts on fractals with applications in RFID and in other smart antenna applications.
Also check out this voronoi fractal on this post. Credits to the image given in the original post.
Lindenmayer system throws a new light upon the matahmatical realation of biology. The author has pleased me with the abstract precision and d post is very intriguing
hi. here are some of our works using LSystem V.4.01
tx
[…] Lindenmayer systems and Fractals […]
Geometric fractals are a really fantastic. I’ve done a lot of work with them in processing. Context Free Art ( http://www.contextfreeart.org/ ) is a great tool for playing with such fractals without knowing much code.
De webosss
[…] Source: Lindenmayer Systems and Fractals | Onionesque Reality […]