The source code for this applet can be downloaded here.

http://www.cpsc.ucalgary.ca/Redirect/bmv/index.html

vlab@cpsc.ucalgary.ca

This demo is based on the program and sample L-systems presented in Przemyslaw Prusinkiewicz and Jim Hanan, *Lindenmeyer Systems,
Fractals, and Plants*, Lecture Notes in Biomathematics 79, Springer-Verlag, Berlin 1989,1992

- the
**axiom**(starting string) - the
**depth**, which is the depth of derivation to be applied (the number of parallel applications of the production rules to be performed) - the
**angle**, which specifies the angle of rotation when rotating right or left. This value is not given in degrees, but rather as the number of rotations in 360 degrees (e.g. to specify single rotations of 20 degrees, provide an angle of 360/20=18) - the
**ignored**characters, which are the characters to be ignored when comparing left and right context for a predecessor in a production rule. Usually these would consist of the characters specifying turtle movement (except for ' [',']') and controls for color and line width - the
**scale**factor, which is the size of the finished drawing in the screen where 1 is the smallest and 100 is the largest - the
**start color**, which is the number of the color to begin with. Look at the provided color bar to choose an appropriate color number. - the
**line type**, allowing for straight lines, Hermite curved lines and BSplines - the
**production rules**, which are the rules to be applied in parallel during each L-systems iteration. Production rules are of the form:

*left context < predecessor > right context --> successor*

where left and right context can be omitted by specifying the '*' character which stands for the null string

All of these entries are specified by entering the values in the provided text entry boxes, except for the production rules. Production rules are shown in a list box and can be added by entering a new production rule in the rules edit box (below the list box) and pressing the **Add** button. In addition, rules contained in the list box can be updated or deleted by selecting the list box entry, causing the rule to appear in the rules edit box. This rule can then be adjusted and updated in the list box by pressing the **Update** button, or removed from the list box by pressing the **Delete** button. Pressing the **Clear** button allows for an entirely new L-system specification to be entered, clearing all of the current parameters.

Within the production rules the following turtle movements and options can be specified:

**+**...this is a clockwise (right) rotation**-**...this is a counter clockwise (left) rotation**|**...this tells the turtle to go in the reverse direction**F**...this tells the turtle to go forward one step, drawing a line**f**...this tells the turtle to go forward one step, not drawing a line**[**...tells the turtle to branch off, saving its current position for later movement**]**...tells the turtle to restore the position it had prior to the branch**#**...increases line width by one**!**...decreases line width by one (minimum width of one)**;**...increases the color number by one**:**...decreases the color number by one

Some example L-systems are provided in a list box on the left of the control panel.
They can be selected by clicking on the desired item in the list box.

Once the L-system has been specified, as mentioned above, press the **Apply** button to create the drawing.