L-systems

From GenerativeArt

(Difference between revisions)
Jump to: navigation, search
Current revision (04:19, 21 November 2012) (view source)
(fix image urls)
 
  F[+F]F[-F]F
  F[+F]F[-F]F
-
{{SingleImage|imageWidthPlusTen=460|imageURL=http://www-viz.tamu.edu/courses/viza658/wiki/lsys/01.png|caption=Example showing string interpretation}}
+
{{SingleImage|imageWidthPlusTen=460|imageURL=http://www.viz.tamu.edu/courses/viza658/wiki/lsys/01.png|caption=Example showing string interpretation}}
== How L-systems Grow ==
== How L-systems Grow ==
-
 
<SPAN STYLE="font-size: larger;">String rewriting/substitution </SPAN>
<SPAN STYLE="font-size: larger;">String rewriting/substitution </SPAN>
-
 
+
<br><br>
L-systems "grow" via iterative string substitution.  The system initially has three components.  
L-systems "grow" via iterative string substitution.  The system initially has three components.  
  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 = 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
-
{{SingleImage|imageWidthPlusTen=460|imageURL=http://www-viz.tamu.edu/courses/viza658/wiki/lsys/02.png|caption=Example showing string substitution}}
+
{{SingleImage|imageWidthPlusTen=460|imageURL=http://www.viz.tamu.edu/courses/viza658/wiki/lsys/02.png|caption=Example showing string substitution}}
== Null Symbols ==
== Null Symbols ==
-
 
<SPAN STYLE="font-size: larger;">Adding complexity to production rules</SPAN>
<SPAN STYLE="font-size: larger;">Adding complexity to production rules</SPAN>
-
 
+
<br><br>
L Systems can also have symbols that have no drawing operations associated with them, but add complexity when applying production rules.
L Systems can also have symbols that have no drawing operations associated with them, but add complexity when applying production rules.
  n = 2; FF[+F[+X]F[-X]+X]FF[-F[+X]F[-X]+X]+F[+X]F[-X]+X
  n = 2; FF[+F[+X]F[-X]+X]FF[-F[+X]F[-X]+X]+F[+X]F[-X]+X
-
{{SingleImage|imageWidthPlusTen=460|imageURL=http://www-viz.tamu.edu/courses/viza658/wiki/lsys/03.png|caption=Example showing string substitution with symbols}}
+
{{SingleImage|imageWidthPlusTen=460|imageURL=http://www.viz.tamu.edu/courses/viza658/wiki/lsys/03.png|caption=Example showing string substitution with symbols}}
== Examples of Branching Structures ==
== Examples of Branching Structures ==
-
 
<SPAN STYLE="font-size: larger;">How production rules create form </SPAN>
<SPAN STYLE="font-size: larger;">How production rules create form </SPAN>
 +
<br><br>
-
 
+
{{SingleImage|imageWidthPlusTen=460|imageURL=http://www.viz.tamu.edu/courses/viza658/wiki/lsys/book1.jpg|caption=Branching Structures}}
-
{{SingleImage|imageWidthPlusTen=460|imageURL=http://www-viz.tamu.edu/courses/viza658/wiki/lsys/book1.jpg|caption=Branching Structures}}
+
== Stochastic L-systems ==
== Stochastic L-systems ==
-
 
<SPAN STYLE="font-size: larger;">L-systems combined with chance operations </SPAN>
<SPAN STYLE="font-size: larger;">L-systems combined with chance operations </SPAN>
-
 
+
<br><br>
Like typical L-systems, but with multiple production rules for a single expression, each with a probability.  The sum of all the probabilities must total to 1.
Like typical L-systems, but with multiple production rules for a single expression, each with a probability.  The sum of all the probabilities must total to 1.
  p3: F (0.33)&rarr; F[-F]F
  p3: F (0.33)&rarr; F[-F]F
-
{{SingleImage|imageWidthPlusTen=600|imageURL=http://www-viz.tamu.edu/courses/viza658/wiki/lsys/04.png|caption=Stochastic L-system}}
+
{{SingleImage|imageWidthPlusTen=600|imageURL=http://www.viz.tamu.edu/courses/viza658/wiki/lsys/04.png|caption=Stochastic L-system}}
<SPAN STYLE="font-size: larger;"><u>Example</u></SPAN>
<SPAN STYLE="font-size: larger;"><u>Example</u></SPAN>
-
{{SingleImage|imageWidthPlusTen=460|imageURL=http://www-viz.tamu.edu/courses/viza658/wiki/lsys/book2.jpg|caption=Stochastic L-system}}
+
{{SingleImage|imageWidthPlusTen=460|imageURL=http://www.viz.tamu.edu/courses/viza658/wiki/lsys/book2.jpg|caption=Stochastic L-system}}
== Context Sensitive L-systems ==
== Context Sensitive L-systems ==
-
 
<SPAN STYLE="font-size: larger;">Simulating hormones and chemical triggers </SPAN>
<SPAN STYLE="font-size: larger;">Simulating hormones and chemical triggers </SPAN>
-
 
+
<br><br>
Context sensitive L-systems can create signals (sub-strings) that travel the length of the branching structure string as it grows.  The signals can, in turn, determine the location of new branches, flowers, buds, etc.
Context sensitive L-systems can create signals (sub-strings) that travel the length of the branching structure string as it grows.  The signals can, in turn, determine the location of new branches, flowers, buds, etc.
-
{{SingleImage|imageWidthPlusTen=460|imageURL=http://www-viz.tamu.edu/courses/viza658/wiki/lsys/book3.jpg|caption=Context Sensitive L-systems}}
+
{{SingleImage|imageWidthPlusTen=460|imageURL=http://www.viz.tamu.edu/courses/viza658/wiki/lsys/book3.jpg|caption=Context Sensitive L-systems}}
-
{{SingleImage|imageWidthPlusTen=460|imageURL=http://www-viz.tamu.edu/courses/viza658/wiki/lsys/book4.jpg|caption=Context Sensitive L-systems}}
+
{{SingleImage|imageWidthPlusTen=460|imageURL=http://www.viz.tamu.edu/courses/viza658/wiki/lsys/book4.jpg|caption=Context Sensitive L-systems}}
== Genetic L-systems ==
== Genetic L-systems ==
-
 
<SPAN STYLE="font-size: larger;">Systems that allow the evolution of form</SPAN>
<SPAN STYLE="font-size: larger;">Systems that allow the evolution of form</SPAN>
-
 
+
<br><br>
L-systems can be combined with genetic algorithms.  It is typically very difficult to start with a given plant or intended form and invent a set of production rules that will produce it.  By encapsulating the L-system within an evolutionary system one can "navigate" the design space and guide the system towards the intended result without having to understand or inspect the actual production rules.
L-systems can be combined with genetic algorithms.  It is typically very difficult to start with a given plant or intended form and invent a set of production rules that will produce it.  By encapsulating the L-system within an evolutionary system one can "navigate" the design space and guide the system towards the intended result without having to understand or inspect the actual production rules.
** Mutation: mutations can be applied to a string converted to a parsed tree representation a la Karl Sims.  Care must be taken to not generate syntactically incorrect command strings.
** Mutation: mutations can be applied to a string converted to a parsed tree representation a la Karl Sims.  Care must be taken to not generate syntactically incorrect command strings.
** Crossover: crossover is even more prone to creating syntax problems.  Note again Karl Sims' work with mathematical image processing expressions.  Alternately, crossover can be achieved by swapping individual production rules without altering individual production rules.
** Crossover: crossover is even more prone to creating syntax problems.  Note again Karl Sims' work with mathematical image processing expressions.  Alternately, crossover can be achieved by swapping individual production rules without altering individual production rules.
 +
 +
 +
== Organizations, Exhibits, Conferences, Publications ==
 +
<SPAN STYLE="font-size: larger;">Selected Links</SPAN>
 +
<br><br>
 +
 +
:The Algorithmic Beauty of Plants - the L-systems classic by Prusinkiewicz and Lindenmeyer now free! - [http://algorithmicbotany.org/papers/#abop click here]
 +
:Algorithmic Botany at the University of Calgary - Professor Prusinkiewicz's research group - [http://algorithmicbotany.org/papers/ click here]
 +
 +
[[Category:Complex systems]]
 +
[[Category:Systems]]
 +
[[Category:Systems used in Computer animation and effects]]
 +
[[Category:Systems used in Computer graphics]]
 +
[[Category:Systems used in Design]]

Current revision

Personal tools