L-systems II

From GenerativeArt

(Difference between revisions)
Jump to: navigation, search
(New page: __FORCETOC__ == A reminder about "The Algorithmic Beauty of Plants" == Essentially all of the information presented here, including illustrations and diagrams, are derived from the classi...)
Current revision (22:38, 16 September 2013) (view source)
(Types of L-systems used in Generative Art: small edit)
 
* Bracketed OL-systems: these systems are deterministic and context free. The use of bracket notation allows the use of a stack that can remember and return to previous locations and headings.
* Bracketed OL-systems: these systems are deterministic and context free. The use of bracket notation allows the use of a stack that can remember and return to previous locations and headings.
* Stochastic OL-systems: these systems are also context free but not deterministic. Rather than using a single mapping from predecessor to replacement string, these systems allow multiple replacements strings each with a probability of selection.
* Stochastic OL-systems: these systems are also context free but not deterministic. Rather than using a single mapping from predecessor to replacement string, these systems allow multiple replacements strings each with a probability of selection.
-
* Context Sensitive L-systems: these systems are deterministic but add the use of angle-brackets to either side of the strict-predecessor. To trigger replacement the context prior to, or after, the strict-predecessor must also match. Such systems can simulate the transmission of signals up and down the resulting tree.
+
* Context Sensitive L-systems: these systems are deterministic but add the use of angle-brackets to either side of the strict-predecessor. To trigger replacement the context prior to and after the strict-predecessor must also match. Such systems can simulate the transmission of signals up and down the resulting tree.
* Parametric OL-systems: these systems add one or more floating point quantities within parenthesis to one or more letters creating a predecessor word. In addition a test is applied to the corresponding quantity. Such systems allow the creation of non-quantized lengths for stem segments.
* Parametric OL-systems: these systems add one or more floating point quantities within parenthesis to one or more letters creating a predecessor word. In addition a test is applied to the corresponding quantity. Such systems allow the creation of non-quantized lengths for stem segments.
* Parametric 2L-systems: these systems combine parameters and context sensitivity. Such systems can simulate models that involve the diffusion of substances throughout the tree.
* Parametric 2L-systems: these systems combine parameters and context sensitivity. Such systems can simulate models that involve the diffusion of substances throughout the tree.
* Other Stochastic L-systems: as a practical matter a stochastic element can be added to any combination of context sensitive and parametric features.
* Other Stochastic L-systems: as a practical matter a stochastic element can be added to any combination of context sensitive and parametric features.
-
 
-
 
== Modeling using L-Systems in 3 Dimensions ==
== Modeling using L-Systems in 3 Dimensions ==
Models intended for 3D modeling add turtle graphic control symbols to extend heading operations to 3D space. All other control symbols remain the same.
Models intended for 3D modeling add turtle graphic control symbols to extend heading operations to 3D space. All other control symbols remain the same.
 +
 +
 +
Other, and satisfy the equation H x L = U.
 +
Rotations of the turtle are then expressed by the equation
 +
 +
  [H' L' U']=[H L U] R
 +
 +
where R is a 3 x 3 rotation matrix
 +
Specifically, rotations by angle α about
 +
vectors U, L and H are represented by the matrices:
 +
 +
              | cos α  sin α  0 |
 +
R<sub>U</sub>(&#945;)  =    |-sin &#945;  cos &#945;  0 |
 +
              |  0      0    1 |
 +
 +
 
 +
              | cos &#945; -sin &#945;  0 |
 +
R<sub>L</sub>(&#945;)  =    |  0      0    1 |
 +
              | sin &#945;  0  cos &#945; |
 +
 +
 +
              | 1      0      0 |
 +
R<sub>H</sub>(&#945;)  =    | 0  cos &#945; -sin &#945; |
 +
              | 0  sin &#945;  cos &#945; |
 +
 +
 +
The following symbols control turtle orientation in space
 +
+ Turn left by angle &#948;, using rotation matrix R<sub>U</sub> (&#948;).
 +
- Turn right by angle &#948;, using rotation matrix R<sub>U</sub>(-&#948;).
 +
& Pitch down by angle &#948;, using rotation matrix R<sub>L</sub>(&#948;).
 +
^ Pitch up by angle &#948;, using rotation matrix R<sub>L</sub>(-&#948;).
 +
\ Roll left by angle &#948;, using rotation matrix R<sub>H</sub>(&#948;).
 +
/ Roll right by angle &#948;, using rotation matrix R<sub>H</sub>(-&#948;).
 +
| Turn around, using rotation matrix RU(180°).
 +
 +
 +
 +
{{SingleImage|imageWidthPlusTen=510|imageURL=http://www.viz.tamu.edu/courses/viza658/wiki/lsys2/01.jpg|caption=}}
 +
 +
 +
== How context sensitive L-systems transmit signals ==
 +
 +
Here is a simple example of signal transmission:
 +
The following sample L-system makes use of context to simulate signal
 +
propagation throughout a string of symbols:
 +
 +
  w:  baaaaaaaa
 +
  p1: b < a &rarr; b
 +
  pg: b &rarr; a
 +
 +
The first few words generated by this L-system are given below:
 +
 +
  baaaaaaaa
 +
  abaaaaaaa
 +
  aabaaaaaa
 +
  aaabaaaaa
 +
  aaaabaaaa
 +
 +
 +
For fully animated growth models see "Timed DOL-systems" in section 6.1 of The [http://algorithmicbotany.org/papers/#abop Algorithmic Beauty of Plants.]
 +
 +
 +
== How parametric (context free) OL-systems work ==
 +
 +
Here is a simple example of a parametric (context free) OL-system:
 +
 +
&omega;  : B(2) A(4, 4)
 +
p1 : A(x, y)  : y ≤ 3 &rarr; A(x &times; 2, x + y)
 +
p2 : A(x, y)  : y > 3 &rarr; B(x) A(x/y, 0)
 +
p3 : B(x)    : x < 1 &rarr; C
 +
p4 : B(x)    : x ≥ 1 &rarr; B(x - 1)
 +
 +
{{SingleImage|imageWidthPlusTen=290|imageURL=http://www.viz.tamu.edu/courses/viza658/wiki/lsys2/02.jpg|caption=}}
 +
 +
 +
Here are the extended control symbols used in a 3D parametric L-system
 +
 +
<table>
 +
<tr>
 +
<td valign="top" width="10%"><i>F</i>(<i>a</i>)</td>
 +
<td>Move forward a step of length <i>a</i> > 0. The position of the
 +
turtle changes to (<i>x', y', z'</i>), where <i>x'</i> = <i>x</i> + <i>aH<sub>x</sub></i>, <i>y'</i> = <i>y</i> + <i>aH<sub>y</sub></i> and <i>z'</i> = <i>z</i> + <i>aH<sub>z</sub></i>. A line segment is drawn between points (<i>x, y, z</i>) and (<i>x', y', z'</i>).</td>
 +
</tr>
 +
<tr>
 +
<td valign="top" width="10%"><i>f</i>(<i>a</i>)</td>
 +
<td>Move forward a step of length a without drawing a line.</td>
 +
</tr>
 +
<tr>
 +
<td valign="top" width="10%">+(<i>a</i>)</td>
 +
<td>Rotate around U by an angle of <i>a</i> degrees. If <i>a</i> is positive, the turtle is turned to the left and if a is negative, the turn is to the right.</td>
 +
</tr>
 +
<tr>
 +
<td valign="top" width="10%">&amp;(<i>a</i>)</td>
 +
<td>Rotate around <i>L</i> by an angle of <i>a</i> degrees. If <i>a</i> is positive, the turtle is pitched down and if <i>a</i> is negative, the turtle is pitched up.</td>
 +
</tr>
 +
<tr>
 +
<td valign="top" width="10%">/(<i>a</i>)</td>
 +
<td>Rotate around <i>H</i> by an angle of <i>a</i> degrees. If <i>a</i> is positive, the turtle is rolled to the right and if <i>a</i> is negative, it is rolled to the left.</td>
 +
</tr>
 +
</table>
 +
 +
 +
{{SingleImage|imageWidthPlusTen=702|imageURL=http://www.viz.tamu.edu/courses/viza658/wiki/lsys2/03.jpg|caption=}}
 +
 +
 +
{{SingleImage|imageWidthPlusTen=728|imageURL=http://www.viz.tamu.edu/courses/viza658/wiki/lsys2/04.jpg|caption=}}
 +
 +
 +
== How parametric (context sensitive) L-systems work ==
 +
 +
Here is a simple example of a parametric 2L-system:
 +
 +
Productions in parametric OL-systems are context-free, ie., applicable
 +
regardless of the context in which the predecessor appears. A context-
 +
sensitive extension is necessary to model information exchange between
 +
neighboring modules. In the parametric case, each component of the
 +
production predecessor (the left context, the strict predecessor and the
 +
right context) is a parametric word with letters from the alphabet V
 +
and formal parameters from the set E. Any formal parameters may
 +
appear in the condition and the production successor.
 +
 +
A sample context-sensitive production is given below:
 +
 +
A(<i>x</i>) < B(<i>y</i>) > C(<i>z</i>) : <i>x</i> + <i>y</i> + <i>z</i> > 10 &rarr; E((<i>x</i> + <i>y</i>)/2)F((<i>y</i> + <i>z</i>)/2)
 +
 +
It can be applied to the module <i>B</i>(5) that appears in a parametric word
 +
…<i>A</i>(4)<i>B</i>(5)<i>C</i>(6)…
 +
 +
Because the test succeeds symbol replacement is made as follows (assuming "A(4)" and "C(6)" are not also words requiring replacement):
 +
 +
((<i>x</i>+<i>y</i>)/2) = ((4+5)/2) = 4.5
 +
((<i>y</i>+z)/2) = ((5+6)/2) = 5.5
 +
…<i>A</i>(4)<i>E</i>(4.5)<i>F</i>(5.5)<i>C</i>(6)…
 +
 +
 +
 +
== Artistic use of L-Systems ==
 +
 +
One of the problems with using L-System is that they are difficult to build with a specific end design in mind. This is one reason why evolving L-Systems using genetic algorithms is so useful. It allows the artist to "steer" the result towards a desired goal.
 +
 +
 +
{{SingleImage|imageWidthPlusTen=962|imageURL=http://www.viz.tamu.edu/courses/viza658/wiki/lsys2/05.jpg|caption=}}
 +
 +
 +
{{SingleImage|imageWidthPlusTen=846|imageURL=http://www.viz.tamu.edu/courses/viza658/wiki/lsys2/06.jpg|caption=}}
 +
 +
 +
{{SingleImage|imageWidthPlusTen=919|imageURL=http://www.viz.tamu.edu/courses/viza658/wiki/lsys2/07.jpg|caption=}}

Current revision

Personal tools