NAME
lsys - builds an L-system fractal from multiple rules
SYNOPSIS
lsys -help
or
lsys [-width integer] [-height integer] [-border inte-
ger] [-depth integer] [-a0 double] [-da double]
[-ds double] [-unoise double] [-rule ... ] [-axiom
string] [-inv] [-mag integer] [-term string]
DESCRIPTION
An L-system is computed according to the specified axiom,
rules, and step angle. The L-system axiom is recursively
expanded for the specified depth, with 'F', 'G', and '|'
actions resulting in movement of the virtual plotter, and
'+' and '-' commands resulting in rotation of the virtual
plotter. See the RULES section of the manual page for
more information on the format for legal rules.
OPTIONS
-width integer
Width of the plot in pixels.
-height integer
Height of the plot in pixels.
-border integer
Approximate number of border pixels.
-depth integer
Recursion depth to use.
-a0 double
Initial angle.
-da double
Delta angle for '+' and '-' commands.
-ds double
Delta step size. Only affects '|' commands and
should be less than 1.
-unoise double
Amount of uniform noise to add to step angle.
-rule ...
Specify a production rule. See RULES section of
manual page.
-axiom string
Starting axiom.
-inv Invert all colors?
-mag integer
Magnification factor.
-term string
How to plot points.
RULES
The L-system rules should always take the form "x=..."
where "x" is a letter and the remaining portion is a
sequence of turtle graphics commands, which operate as
described below.
'F' is the draw forward command, which moves the plotter
forward by a fixed length, drawing a line from the old
position to the new position.
'G' (Go Forward) is similar to 'F', but only moves the
plotter and does not draw a line.
'+' and '-' turn the plotter to the right (or left) by a
fixed angle determined by the -da switch. If an integer
precedes the '+' or '-' symbol, then the plotter effec-
tively makes that number of right-hand turns.
'[' saves the current position and angle of the plotter
for later use, which is restored by the ']' command.
'|' move the turtle forward by a length computed from the
execution depth, drawing a line from the old position to
the new. Thus, this command is similar to 'F' but it is
not recursively expanded. If DS is the value supplied by
the -ds switch, then the step size will be proportional to
DS^depth. This allows for certain types of figures to be
drawn that would otherwise be difficult to express without
this command.
EXAMPLES
A weed:
lsys -da 20 -rule "F=|[-F]|[+F][-F]F"
Kock curve:
lsys -da 60 -rule F=F-F++F-F
Penrose Snowflake:
lsys -da 18 -axiom F4-F4-F4-F4-F -rule
F=F4-F4-F10-F++F4-F
Sierpinski Arrowhead:
lsys -da 60 -rule "F=[-G+++F][-G+F][GG--F]" -rule
G=GG
See the author's book, "The Computational Beauty of
Nature," for more examples.
MISCELLANY
If you are using a UNIX command shell, be sure to quote
any rules with brackets so that the shell passes them to
the program correctly.
BUGS
No sanity checks are performed to make sure that any of
the options make sense.
The border size is only approximately calculated because
the author felt a bit lazy at the time of writing this
program. However, it's pretty close for most values.
AUTHOR
Copyright (c) 1997, Gary William Flake.
Permission granted for any use according to the standard
GNU ``copyleft'' agreement provided that the author's com-
ments are neither modified nor removed. No warranty is
given or implied.
Man(1) output converted with
man2html