![]() |
![]() |
I'm a terrible sketcher. The image to the left is my canonical tree, the same one I've drawn since I was eight years old. The image to the right is my attempt at doing the same kind of tree with the Gimp, a nice free Unix Photoshop-like thing. Nice birdies.
![]() |
![]() |
![]() |
![]() |
![]() |
Unfortunately, I did not have time to write a new program in Java. But I had written a C++ program awhile ago for rendering Lindenmayer systems. Here are some images of trees generated by my program, based on well-known rules. You might enjoy these more if you imagine these as trees in winter, without leaves.
For more information on L-systems, see The Algorithmic Beauty of Plants
angle 16 axiom x x=F-[[x]+x]+F[+Fx]-x F=FF | ![]() |
![]() |
Lindenmayer systems work with a really simple rule rewriting system. The code on the left is the program for the tree, the input to the system. My L-system interpreter reads that program and expands it, yielding the code in the middle. My program then takes that code and renders it graphically, producing the image to the right.
So here we have three representations of a tree: recursive code, expanded code, and graphical. The interesting thing about the program on left is the recursive structure of it. Regularities in the tree are visible in the code in the middle.
I'm a fairly naïve artist. My sketches of trees have very little to do with the L-systems. I look at a tree visually from the top down: a collection of branches, and then some leafy bunches. The branches themselves have a bit of recursive structure, but not much.
By contrast, L-systems are very formal and abstract. They are also a bottom-up representation of a structure. The interesting thing is that the L-system representation closely resembles the rules in the tree's actual DNA; real use L-systems as models of morphogenesis.
I really like the pastiche aspect of digital drawing programs. For my colour sketch, I started with a crayon-like drawing - green leaf boundary, brown tree boundary. I then selected the interior of the tree, filled it green, then did a "Scatter HSV" to randomize the colour a bit and "oilify" to merge it together. The tree bark is obviously a texture I cloned in; I love the way it's out of scale. The birdy was some predefined paintbrush in Gimp; I drew it with some funky textures that don't look much like a bird, but are pretty.
Finally, here's what real L-system artists can do. This is a scan from The Algorithmic Beauty of Plants.

| Nelson Minar | Created: December 7, 1998 |
| <nelson@media.mit.edu> | Updated: December 7, 1998 |