HOME

TheInfoList



OR:

An L-system or Lindenmayer system is a
parallel Parallel is a geometric term of location which may refer to: Computing * Parallel algorithm * Parallel computing * Parallel metaheuristic * Parallel (software), a UNIX utility for running programs in parallel * Parallel Sysplex, a cluster of IB ...
rewriting system In mathematics, computer science, and logic, rewriting covers a wide range of methods of replacing subterms of a formula with other terms. Such methods may be achieved by rewriting systems (also known as rewrite systems, rewrite engines, or reduc ...
and a type of
formal grammar In formal language theory, a grammar (when the context is not given, often called a formal grammar for clarity) describes how to form strings from a language's alphabet that are valid according to the language's syntax. A grammar does not describe ...
. An L-system consists of an
alphabet An alphabet is a standardized set of basic written graphemes (called letters) that represent the phonemes of certain spoken languages. Not all writing systems represent language in this way; in a syllabary, each character represents a sy ...
of symbols that can be used to make
string String or strings may refer to: * String (structure), a long flexible structure made from threads twisted together, which is used to tie, bind, or hang other objects Arts, entertainment, and media Films * ''Strings'' (1991 film), a Canadian ani ...
s, a collection of production rules that expand each symbol into some larger string of symbols, an initial "
axiom An axiom, postulate, or assumption is a statement that is taken to be true, to serve as a premise or starting point for further reasoning and arguments. The word comes from the Ancient Greek word (), meaning 'that which is thought worthy or f ...
" string from which to begin construction, and a mechanism for translating the generated strings into geometric structures. L-systems were introduced and developed in 1968 by
Aristid Lindenmayer Aristid Lindenmayer (17 November 1925 – 30 October 1989) was a Hungarian biologist. In 1968 he developed a type of formal languages that is today called L-systems or Lindenmayer Systems. Using those systems Lindenmayer modelled the behaviour ...
, a Hungarian theoretical
biologist A biologist is a scientist who conducts research in biology. Biologists are interested in studying life on Earth, whether it is an individual cell, a multicellular organism, or a community of interacting populations. They usually specialize in ...
and
botanist Botany, also called , plant biology or phytology, is the science of plant life and a branch of biology. A botanist, plant scientist or phytologist is a scientist who specialises in this field. The term "botany" comes from the Ancient Greek w ...
at the
University of Utrecht Utrecht University (UU; nl, Universiteit Utrecht, formerly ''Rijksuniversiteit Utrecht'') is a public research university in Utrecht, Netherlands. Established , it is one of the oldest universities in the Netherlands. In 2018, it had an enroll ...
. Lindenmayer used L-systems to describe the behaviour of plant cells and to model the growth processes of
plant development Important structures in plant development are buds, shoots, roots, leaves, and flowers; plants produce these tissues and structures throughout their life from meristems located at the tips of organs, or between mature tissues. Thus, a living plant ...
. L-systems have also been used to model the morphology of a variety of organisms and can be used to generate self-similar
fractal In mathematics, a fractal is a geometric shape containing detailed structure at arbitrarily small scales, usually having a fractal dimension strictly exceeding the topological dimension. Many fractals appear similar at various scales, as il ...
s.


Origins

As a biologist, Lindenmayer worked with
yeast Yeasts are eukaryotic, single-celled microorganisms classified as members of the fungus kingdom. The first yeast originated hundreds of millions of years ago, and at least 1,500 species are currently recognized. They are estimated to constit ...
and filamentous
fungi A fungus ( : fungi or funguses) is any member of the group of eukaryotic organisms that includes microorganisms such as yeasts and molds, as well as the more familiar mushrooms. These organisms are classified as a kingdom, separately from ...
and studied the growth patterns of various types of bacteria, such as the cyanobacteria '' Anabaena catenula''. Originally, the L-systems were devised to provide a formal description of the development of such simple multicellular organisms, and to illustrate the neighbourhood relationships between plant cells. Later on, this system was extended to describe higher plants and complex branching structures.


L-system structure

The
recursive Recursion (adjective: ''recursive'') occurs when a thing is defined in terms of itself or of its type. Recursion is used in a variety of disciplines ranging from linguistics to logic. The most common application of recursion is in mathematics ...
nature of the L-system rules leads to
self-similarity __NOTOC__ In mathematics, a self-similar object is exactly or approximately similar to a part of itself (i.e., the whole has the same shape as one or more of the parts). Many objects in the real world, such as coastlines, are statistically s ...
and thereby,
fractal In mathematics, a fractal is a geometric shape containing detailed structure at arbitrarily small scales, usually having a fractal dimension strictly exceeding the topological dimension. Many fractals appear similar at various scales, as il ...
-like forms are easy to describe with an L-system. Plant models and natural-looking organic forms are easy to define, as by increasing the recursion level the form slowly 'grows' and becomes more complex. Lindenmayer systems are also popular in the generation of
artificial life Artificial life (often abbreviated ALife or A-Life) is a field of study wherein researchers examine systems related to natural life, its processes, and its evolution, through the use of simulations with computer models, robotics, and biochemi ...
. L-system grammars are very similar to the
semi-Thue grammar In theoretical computer science and mathematical logic a string rewriting system (SRS), historically called a semi- Thue system, is a rewriting system over strings from a (usually finite) alphabet. Given a binary relation R between fixed strings o ...
(see
Chomsky hierarchy In formal language theory, computer science and linguistics, the Chomsky hierarchy (also referred to as the Chomsky–Schützenberger hierarchy) is a containment hierarchy of classes of formal grammars. This hierarchy of grammars was described b ...
). L-systems are now commonly known as ''parametric'' L systems, defined as a
tuple In mathematics, a tuple is a finite ordered list (sequence) of elements. An -tuple is a sequence (or ordered list) of elements, where is a non-negative integer. There is only one 0-tuple, referred to as ''the empty tuple''. An -tuple is defi ...
:G = (''V'', ω, ''P''), where * V (the ''alphabet'') is a set of symbols containing both elements that can be replaced (''variables'') and those which cannot be replaced ("constants" or "terminals") * ω (''start'', ''axiom'' or ''initiator'') is a string of symbols from V defining the initial state of the system * P is a set of '' production rules'' or ''productions'' defining the way variables can be replaced with combinations of constants and other variables. A production consists of two strings, the ''predecessor'' and the ''successor''. For any symbol A which is a member of the set V which does not appear on the left hand side of a production in P, the identity production A → A is assumed; these symbols are called ''constants'' or ''terminals''. (See
Law of identity In logic, the law of identity states that each thing is identical with itself. It is the first of the historical three laws of thought, along with the law of noncontradiction, and the law of excluded middle. However, few systems of logic are bu ...
). 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. The fact that each iteration employs as many rules as possible differentiates an L-system from a
formal language In logic, mathematics, computer science, and linguistics, a formal language consists of words whose letters are taken from an alphabet and are well-formed according to a specific set of rules. The alphabet of a formal language consists of sym ...
generated by a
formal grammar In formal language theory, a grammar (when the context is not given, often called a formal grammar for clarity) describes how to form strings from a language's alphabet that are valid according to the language's syntax. A grammar does not describe ...
, which applies only one rule per iteration. If the production rules were to be applied only one at a time, one would quite simply generate a string in a language, and all such sequences of applications would produce the language specified by the grammar. There are some strings in some languages, however, that cannot be generated if the grammar is treated as an L-system rather than a language specification. For example, suppose there is a rule S→SS in a grammar. If productions are done one at a time, then starting from S, we can get first SS, and then, applying the rule again, SSS. However, if all applicable rules are applied at every step, as in an L-system, then we cannot get this sentential form. Instead, the first step would give us SS, but the second would apply the rule twice, giving us SSSS. Thus, the set of strings produced by an L-systems from a given grammar is a subset of the formal language defined by the grammar, and if we take a language to be defined as a set of strings, this means that a given L-system is effectively a subset of the formal language defined by the L-system's grammar. An L-system is ''context-free'' if each production rule refers only to an individual symbol and not to its neighbours. Context-free L-systems are thus specified by a
context-free grammar In formal language theory, a context-free grammar (CFG) is a formal grammar whose production rules are of the form :A\ \to\ \alpha with A a ''single'' nonterminal symbol, and \alpha a string of terminals and/or nonterminals (\alpha can be empt ...
. If a rule depends not only on a single symbol but also on its neighbours, it is termed a ''context-sensitive'' L-system. If there is exactly one production for each symbol, then the L-system is said to be ''deterministic'' (a deterministic context-free L-system is popularly called a ''
D0L system In mathematics and computer science, a morphic word or substitutive word is an infinite sequence of symbols which is constructed from a particular class of endomorphism of a free monoid. Every automatic sequence is morphic. Definition Let ''f'' ...
''). If there are several, and each is chosen with a certain probability during each iteration, then it is a ''stochastic'' L-system. Using L-systems for generating graphical images requires that the symbols in the model refer to elements of a drawing on the computer screen. For example, the program '' Fractint'' uses turtle graphics (similar to those in the
Logo programming language Logo is an educational programming language, designed in 1967 by Wally Feurzeig, Seymour Papert, and Cynthia Solomon. ''Logo'' is not an acronym: the name was coined by Feurzeig while he was at Bolt, Beranek and Newman, and derives from the Gr ...
) to produce screen images. It interprets each constant in an L-system model as a turtle command.


Examples of L-systems


Example 1: Algae

Lindenmayer's original L-system for modelling the growth of algae. :variables : A B :constants : none :axiom : A :rules : (A → AB), (B → A) which produces: : ''n'' = 0 : A : ''n'' = 1 : AB : ''n'' = 2 : ABA : ''n'' = 3 : ABAAB : ''n'' = 4 : ABAABABA : ''n'' = 5 : ABAABABAABAAB : ''n'' = 6 : ABAABABAABAABABAABABA : ''n'' = 7 : ABAABABAABAABABAABABAABAABABAABAAB


Example 1: Algae, explained

n=0: A start (axiom/initiator) / \ n=1: A B the initial single A spawned into AB by rule (A → AB), rule (B → A) couldn't be applied /, \ n=2: A B A former string AB with all rules applied, A spawned into AB again, former B turned into A / , , , \ n=3: A B A A B note all A's producing a copy of themselves in the first place, then a B, which turns ... / , , , \ , \ \ n=4: A B A A B A B A ... into an A one generation later, starting to spawn/repeat/recurse then The result is the sequence of
Fibonacci word A Fibonacci word is a specific sequence of binary digits (or symbols from any two-letter alphabet). The Fibonacci word is formed by repeated concatenation in the same way that the Fibonacci numbers are formed by repeated addition. It is a parad ...
s. If we count the length of each string, we obtain the famous
Fibonacci sequence In mathematics, the Fibonacci numbers, commonly denoted , form a sequence, the Fibonacci sequence, in which each number is the sum of the two preceding ones. The sequence commonly starts from 0 and 1, although some authors start the sequence from ...
of numbers (skipping the first 1, due to our choice of axiom): : 1 2 3 5 8 13 21 34 55 89 ... If we would like to not skip the first 1, we can use axiom ''B''. That would place ''B'' node before the topmost node (''A'') of the graph above. For each string, if we count the ''k''-th position from the left end of the string, the value is determined by whether a multiple of the
golden ratio In mathematics, two quantities are in the golden ratio if their ratio is the same as the ratio of their sum to the larger of the two quantities. Expressed algebraically, for quantities a and b with a > b > 0, where the Greek letter phi ( ...
falls within the interval (k-1, k). The ratio of A to B likewise converges to the golden mean. This example yields the same result (in terms of the length of each string, not the sequence of ''A''s and ''B''s) if the rule (''A'' → ''AB'') is replaced with (''A'' → ''BA''), except that the strings are mirrored. This sequence is a locally catenative sequence because G(n)=G(n-1)G(n-2), where G(n) is the ''n''-th generation.


Example 2: Fractal (binary) tree

* variables : 0, 1 * constants: “ ��, “�� * axiom : 0 * rules : (1 → 11), (0 → 1 ) The shape is built by
recursively Recursion (adjective: ''recursive'') occurs when a thing is defined in terms of itself or of its type. Recursion is used in a variety of disciplines ranging from linguistics to logic. The most common application of recursion is in mathematics ...
feeding the axiom through the production rules. Each character of the input string is checked against the rule list to determine which character or string to replace it with in the output string. In this example, a '1' in the input string becomes '11' in the output string, while '[' remains the same. Applying this to the axiom of '0', we get: We can see that this string quickly grows in size and complexity. This string can be drawn as an image by using turtle graphics, where each symbol is assigned a graphical operation for the turtle to perform. For example, in the sample above, the turtle may be given the following instructions: * 0: draw a line segment ending in a leaf * 1: draw a line segment * [: push position and angle, turn left 45 degrees * ]: pop position and angle, turn right 45 degrees The push and pop refer to a LIFO stack (more technical grammar would have separate symbols for "push position" and "turn left"). When the turtle interpretation encounters a ' /nowiki>', the current position and angle are saved, and are then restored when the interpretation encounters a '/nowiki>'. If multiple values have been "pushed," then a "pop" restores the most recently saved values. Applying the graphical rules listed above to the earlier recursion, we get:


Example 3: Cantor set

: variables : A B : constants : none : start : A : rules : (A → ABA), (B → BBB) Let ''A'' mean "draw forward" and ''B'' mean "move forward". This produces the famous Cantor's fractal set on a real straight line R.


Example 4: Koch curve

A variant of the Koch curve which uses only right angles. : variables : F : constants : + − : start : F : rules : (F → F+F−F−F+F) Here, F means "draw forward", + means "turn left 90°", and − means "turn right 90°" (see turtle graphics). : ''n'' = 0: :: F :: : ''n'' = 1: :: F+F−F−F+F :: : ''n'' = 2: :: F+F−F−F+F+F+F−F−F+F−F+F−F−F+F−F+F−F−F+F+F+F−F−F+F :: : ''n'' = 3: :: F+F−F−F+F+F+F−F−F+F−F+F−F−F+F−F+F−F−F+F+F+F−F−F+F+ ::F+F−F−F+F+F+F−F−F+F−F+F−F−F+F−F+F−F−F+F+F+F−F−F+F− :: F+F−F−F+F+F+F−F−F+F−F+F−F−F+F−F+F−F−F+F+F+F−F−F+F− :: F+F−F−F+F+F+F−F−F+F−F+F−F−F+F−F+F−F−F+F+F+F−F−F+F+ :: F+F−F−F+F+F+F−F−F+F−F+F−F−F+F−F+F−F−F+F+F+F−F−F+F ::


Example 5: Sierpinski triangle

The Sierpinski triangle drawn using an L-system. : variables : F G : constants : + − : start : F−G−G : rules : (F → F−G+F+G−F), (G → GG) : angle : 120° Here, F means "draw forward", G means "draw forward", + means "turn left by angle", and − means "turn right by angle". File:Sierpinski Triangle (from L-System, 2 iterations).png, n = 2 File:Sierpinski Triangle (from L-System, 4 iterations).png, n = 4 File:Sierpinski Triangle (from L-System, 6 iterations).png, n = 6 It is also possible to approximate the Sierpinski triangle using a Sierpiński arrowhead curve L-system. : variables : A B : constants : + − : start : A : rules : (A → B−A−B), (B → A+B+A) : angle : 60° Here, A and B both mean "draw forward", + means "turn left by angle", and − means "turn right by angle" (see turtle graphics).


Example 6: Dragon curve

The
dragon curve A dragon curve is any member of a family of self-similar fractal curves, which can be approximated by recursive methods such as Lindenmayer systems. The dragon curve is probably most commonly thought of as the shape that is generated from rep ...
drawn using an L-system. : variables : F G : constants : + − : start : F : rules : (F → F+G), (G → F-G) : angle : 90° Here, F and G both mean "draw forward", + means "turn left by angle", and − means "turn right by angle".


Example 7: Fractal plant

: variables : X F : constants : + − : start : X : rules : (X → F+ XX]-F FXX), (F → FF) : angle : 25° Here, F means "draw forward", − means "turn right 25°", and + means "turn left 25°". X does not correspond to any drawing action and is used to control the evolution of the curve. The square bracket " corresponds to saving the current values for position and angle, which are restored when the corresponding " is executed.


Variations

A number of elaborations on this basic L-system technique have been developed which can be used in conjunction with each other. Among these are
stochastic grammar Stochastic (, ) refers to the property of being well described by a random probability distribution. Although stochasticity and randomness are distinct in that the former refers to a modeling approach and the latter refers to phenomena themselve ...
s, context sensitive grammars, and parametric grammars.


Stochastic grammars

The grammar model we have discussed thus far has been deterministic—that is, given any symbol in the grammar's alphabet, there has been exactly one production rule, which is always chosen, and always performs the same conversion. One alternative is to specify more than one production rule for a symbol, giving each a
probability Probability is the branch of mathematics concerning numerical descriptions of how likely an event is to occur, or how likely it is that a proposition is true. The probability of an event is a number between 0 and 1, where, roughly speaking, ...
of occurring. For example, in the grammar of Example 2, we could change the rule for rewriting "0" from: :0 → 1 to a probabilistic rule: :0 (0.5) → 1 :0 (0.5) → 0 Under this production, whenever a "0" is encountered during string rewriting, there would be a 50% chance it would behave as previously described, and a 50% chance it would not change during production. When a stochastic grammar is used in an
evolution Evolution is change in the heredity, heritable Phenotypic trait, characteristics of biological populations over successive generations. These characteristics are the Gene expression, expressions of genes, which are passed on from parent to ...
ary context, it is advisable to incorporate a
random In common usage, randomness is the apparent or actual lack of pattern or predictability in events. A random sequence of events, symbols or steps often has no order and does not follow an intelligible pattern or combination. Individual rand ...
seed into the
genotype The genotype of an organism is its complete set of genetic material. Genotype can also be used to refer to the alleles or variants an individual carries in a particular gene or genetic location. The number of alleles an individual can have in a ...
, so that the stochastic properties of the image remain constant between generations.


Context sensitive grammars

A context sensitive production rule looks not only at the symbol it is modifying, but the symbols on the string appearing before and after it. For instance, the production rule: :b < a > c → aa transforms "a" to "aa", but only if the "a" occurs between a "b" and a "c" in the input string: :…bac… As with stochastic productions, there are multiple productions to handle symbols in different contexts. If no production rule can be found for a given context, the identity production is assumed, and the symbol does not change on transformation. If context-sensitive and context-free productions both exist within the same grammar, the context-sensitive production is assumed to take precedence when it is applicable.


Parametric grammars

In a parametric grammar, each symbol in the alphabet has a parameter list associated with it. A symbol coupled with its parameter list is called a module, and a string in a parametric grammar is a series of modules. An example string might be: :a(0,1) (0,0)(1,2) The parameters can be used by the drawing functions, and also by the production rules. The production rules can use the parameters in two ways: first, in a conditional statement determining whether the rule will apply, and second, the production rule can modify the actual parameters. For example, look at: :a(x,y) : x

0 → a(1, y+1)b(2,3) The module a(x,y) undergoes transformation under this production rule if the conditional x=0 is met. For example, a(0,2) would undergo transformation, and a(1,2) would not. In the transformation portion of the production rule, the parameters as well as entire modules can be affected. In the above example, the module b(x,y) is added to the string, with initial parameters (2,3). Also, the parameters of the already existing module are transformed. Under the above production rule, :a(0,2) Becomes :a(1,3)b(2,3) as the "x" parameter of a(x,y) is explicitly transformed to a "1" and the "y" parameter of a is incremented by one. Parametric grammars allow line lengths and branching angles to be determined by the grammar, rather than the turtle interpretation methods. Also, if age is given as a parameter for a module, rules can change depending on the age of a plant segment, allowing animations of the entire life-cycle of the tree to be created.


Bi-directional grammars

The bi-directional model explicitly separates the symbolic rewriting system from the shape assignment. For example, the string rewriting process in the Example 2 (Fractal tree) is independent on how graphical operations are assigned to the symbols. In other words, an infinite number of draw methods are applicable to a given rewriting system. The bi-directional model consists of 1) a forward process constructs the derivation tree with production rules, and 2) a backward process realizes the tree with shapes in a stepwise manner (from leaves to the root). Each inverse-derivation step involves essential geometric-topological reasoning. With this bi-directional framework, design constraints and objectives are encoded in the grammar-shape translation. In architectural design applications, the bi-directional grammar features consistent interior connectivity and a rich spatial hierarchy.


Open problems

There are many open problems involving studies of L-systems. For example: * Characterisation of all the deterministic context-free L-systems which are locally catenative. (A complete solution is known only in the case where there are only two variables). * Given a structure, find an L-system that can produce that structure.


Types of L-systems

L-systems on the
real line In elementary mathematics, a number line is a picture of a graduated straight line that serves as visual representation of the real numbers. Every point of a number line is assumed to correspond to a real number, and every real number to a poin ...
R: * Prouhet-Thue-Morse system Well-known L-systems on a plane R2 are: *
space-filling curve In mathematical analysis, a space-filling curve is a curve whose range contains the entire 2-dimensional unit square (or more generally an ''n''-dimensional unit hypercube). Because Giuseppe Peano (1858–1932) was the first to discover one, spa ...
s (
Hilbert curve The Hilbert curve (also known as the Hilbert space-filling curve) is a continuous fractal space-filling curve first described by the German mathematician David Hilbert in 1891, as a variant of the space-filling Peano curves discovered by Giusep ...
, Peano's curves, Dekking's church,
kolam Kolam (,, ), also known as Muggu () or Tharai Aalangaram () Rangoli () is a form of traditional decorative art that is drawn by using rice flour as per age-old conventions. It is also drawn using white stone powder, chalk or chalk powder, often ...
s), * median space-filling curves (
Lévy C curve In mathematics, the Lévy C curve is a self-similar fractal curve that was first described and whose differentiability properties were analysed by Ernesto Cesàro in 1906 and Georg Faber in 1910, but now bears the name of French mathematician ...
, Harter-Heighway dragon curve, Davis-Knuth terdragon), * tilings (
sphinx tiling In geometry, the sphinx tiling is a tessellation of the plane using the "sphinx", a pentagonal hexiamond formed by gluing six equilateral triangles together. The resultant shape is named for its reminiscence to the Great Sphinx at Giza. A sphin ...
,
Penrose tiling A Penrose tiling is an example of an aperiodic tiling. Here, a ''tiling'' is a covering of the plane by non-overlapping polygons or other shapes, and ''aperiodic'' means that shifting any tiling with these shapes by any finite distance, without r ...
)


See also

* Digital morphogenesis *
Fractal In mathematics, a fractal is a geometric shape containing detailed structure at arbitrarily small scales, usually having a fractal dimension strictly exceeding the topological dimension. Many fractals appear similar at various scales, as il ...
*
Iterated function system In mathematics, iterated function systems (IFSs) are a method of constructing fractals; the resulting fractals are often self-similar. IFS fractals are more related to set theory than fractal geometry. They were introduced in 1981. IFS fractals, ...
*
Hilbert curve The Hilbert curve (also known as the Hilbert space-filling curve) is a continuous fractal space-filling curve first described by the German mathematician David Hilbert in 1891, as a variant of the space-filling Peano curves discovered by Giusep ...
* that provides diffusing-chemical-reagent simulations (including Life-like) *
Stochastic context-free grammar Grammar theory to model symbol strings originated from work in computational linguistics aiming to understand the structure of natural languages. Probabilistic context free grammars (PCFGs) have been applied in probabilistic modeling of RNA structu ...
*
SpeedTree SpeedTree is a group of vegetation programming and modeling software products developed and sold by Interactive Data Visualization, Inc. (IDV) that generates virtual foliage for animations, architecture and in real time for video games and dema ...
* '' The Algorithmic Beauty of Plants''


Notes


Books

* Przemysław Prusinkiewicz,
Aristid Lindenmayer Aristid Lindenmayer (17 November 1925 – 30 October 1989) was a Hungarian biologist. In 1968 he developed a type of formal languages that is today called L-systems or Lindenmayer Systems. Using those systems Lindenmayer modelled the behaviour ...
The Algorithmic Beauty of Plantsbr>PDF version available here for free
*
Grzegorz Rozenberg Grzegorz Rozenberg (born 14 March 1942, Warsaw) is a Polish and Dutch computer scientist. His primary research areas are natural computing, formal language and automata theory, graph transformations, and concurrent systems. He is referre ...
, Arto Salomaa – ''Lindenmayer Systems: Impacts on Theoretical Computer Science, Computer Graphics, and Developmental Biology'' * D.S. Ebert, F.K. Musgrave, et al. – ''Texturing and Modeling: A Procedural Approach'', * Burry, Jane, Burry Mark, (2010). The New Mathematics of Architecture, New York: Thames and Hudson. * Aristid Lindenmayer,
Mathematical models for cellular interaction in development
" J. Theoret. Biology, 18:280—315, 1968.


External links


Algorithmic Botany at the University of Calgary

L-Systems
A user friendly page to generate fractals and plants from L-Systems.
Branching: L-system Tree
��A
Java applet Java applets were small applications written in the Java programming language, or another programming language that compiles to Java bytecode, and delivered to users in the form of Java bytecode. The user launched the Java applet from a ...
and its
source code In computing, source code, or simply code, is any collection of code, with or without comments, written using a human-readable programming language, usually as plain text. The source code of a program is specially designed to facilitate the ...
(
open source Open source is source code that is made freely available for possible modification and redistribution. Products include permission to use the source code, design documents, or content of the product. The open-source model is a decentralized sof ...
) of the botanical tree growth simulation using the L-system.
Fractint L-System True FractalsOpenAlea
: an open-source software environment for plant modeling, which contain
L-Py
an open-source python implementation of the Lindenmayer systems
"powerPlant" an open-source landscape modelling software

''Fractint'' home page

A simple L-systems generator (Windows)

Lyndyhop: another simple L-systems generator (Windows & Mac)


* Page about using L-systems and
genetic algorithm In computer science and operations research, a genetic algorithm (GA) is a metaheuristic inspired by the process of natural selection that belongs to the larger class of evolutionary algorithms (EA). Genetic algorithms are commonly used to gene ...
s to generate music.
eXtended L-Systems (XL), Relational Growth Grammars, and open-source software platform GroIMP.
* ttps://itunes.apple.com/us/app/my-graphics/id534963449?mt=8 My Graphics – an iPhone/iPad app that generates several L-system graphics patterns.*
Online experiments with L-Systems using JSXGraph (JavaScript)

Flea
A Ruby implementation of LSYSTEM, using a Domain Specific Language instead of terse generator commands

A plant and fractal generator using L-systems (JavaScript) *


HTML5 L-Systems – try out experiments online

The vector-graphics program
Inkscape Inkscape is a free and open-source vector graphics editor used to create vector images, primarily in Scalable Vector Graphics (SVG) format. Other formats can be imported and exported. Inkscape can render primitive vector shapes (e.g. rectan ...
features an L-System Parser *
An implementation of a L-system parser and simple turtle graphics in the Icon programming language

A Lindenmeyer System Generator by Nolan Carroll

Bloogen: L-Systems with a genetic twist
{{Authority control