L-Systems: Simulation of Development and Growth
L-Systems: Simulation of Development and Growth
Simulation of
development and
growth
The algorithmic beauty of plants
L-Systems
*if we say ’at least one word’ it is a OL system, but not a deterministic one DOL.
Derivation
Let µ = a1 . . . am be an
arbitrary word over V axiom ω
The word ν =χ1 . . . χm ∈ V∗
is directly derived from (or derivation from a
generated by) µ, noted µ ⇒
ν, if and only if ai → χi for all
i = 1, . . . , m.
Developmental
A word ν is generated by G
in a derivation of length n if sequence
there exists a developmental
sequence of words µ0, µ1, . .
. , µn such that µ0 = ω, µn = ν
and µ0 ⇒ µ1 ⇒ . . . ⇒ µn
Example: Development of a filament of
the bacteria Anabaena catenula
A complication occurs
when the curve is not
connected
A second production
rule with predecessor is
then required
More L-systems coding fractals (1)
The ease of modifying L-
systems makes them
suitable for developing new
von Koch curves.
Try to gradually develop by
inserting, deleting, replacing
symbols!
A sequence of Koch curves
obtained by successive
modification of the
production successor
Similar L-systems can give
rise to very dissimilar
graphical representations
L-system synthesis
Edge rewriting
Edge rewriting can be viewed as an
extension of Koch constructions.
The figure shows the dragon curve
and the L-system that generated it.
Both the Fl and Fr symbols
represent edges created by the
turtle executing the “move forward”
command.
The productions substitute Fl or Fr
edges by pairs of lines forming left
or right turns.
Many interesting curves can be
obtained assuming two types of
edges, “left” and “right.”
Dragoncurve can be also obtained
by paper-folding and looks similar
to Julia set
Example
Synthesis of an
Sierpinski gasket using
left turn right turn
system
Edge rewriting makes
synthesis more intuitive
F: space filling
A: self-avoiding
S: simple
S: self-similar
FASS curve construction
is transformed
to
production rule
production rule
applied
Bracketed 0L Systems
The definition of tree L-systems They are interpreted by the
does not specify the data turtle as follows
structure for representing axial [ Push the current state of the
trees. turtle onto a pushdown
One possibility is to use a list operations stack.
representation with a tree The information saved on the
topology (initiator, generator) stack contains the turtle’s
position and orientation. and
Alternatively, axial trees can be
possibly other attributes.
represented using strings with
brackets (e.g. in bracketed OL- ] Pop a state from the stack and
systems) make it the current state of the
turtle. No line is drawn,although
New symbols ‘[‘ and ‘]’ are
in general the position of the
introduced to delimit a branch.
turtle changes.
Example
Bracketed OL-systems