				PlantMaker v0.1
					by Steve O'Dell

	   
	   (for use with the POVRAY 3-Dimensional raytracing program)


Introduction:
-------------        

	By applying L-System fractal algorithms to a 3-Dimensional 
trigonometric system, I've come up with this program which will 
generate 3-D L-Systems ( dig??).  Basically all you need to know is that 
this a program that will create plant-like structures using many 
cylinders, often hundreds and sometimes thousands.  You the user, 
with a proper background(given below) in L-Systems, can utilize this 
programs to create almost any type of fractal, bush, tree, curve, or 
whatever else you can think of.

Quick background in L-Systems:
------------------------------

	Please don't take what I say here as an ultimate, final truth(I'm not 
even sure if half of this is right).  Just be complacent it gives you 
enough knowledge to utilize this program.  
	In the early 80's(?), some guy with the last name Lindenmeyer(?), 
or Lindenmeiner(?) or something like that, created this type of way of 
making fractals( don't worry about what a fractal is).  
	Take any line of characters such as:

		lr[od]rrL6d                                     (depth 1)

now replace any d's with the whole string and you arrive at depth, or 
level, 2:
		    -----------     -----------
		lr[olr[od]rrL6d]rrL6lr[od]rrL6d                 (depth 2)
		    \         /     \        /
		      \     /         \    /
			\ /             \/  
		lr[o_____d_____]rrL6_____d_____                  (depth 1)

still confused? Here's another simpler example( remember, replace 
any 'd' with the original string, often called the seed, by me anyway):
		----------so replace 'd' with 'rd'-------------
		rd                                              (depth 1)
		rrd                                             (depth 2)
		rrrd                                            (depth 3)
		rrrrrrrrrrrrrrrrrd                              (depth 17)

or, another example:

		d[rd]d                                          (depth 1)

		   d  [r  d   ]  d     
		
		d[rd]d[rd[rd]d]d[rd]d                           (depth 2)

d[rd]d[rd[rd]d]d[rd]d[rd[rd]d[rd[rd]d]d[rd]d]d[rd]d[rd[rd]d]d[rd]d   (depth 3)

Now that you're cool with that, let's move on(if not, keep studying, you'll
catch on.)
	Each character in the string is a command to do something.  For 
example, 'd' means draw, 'r' means turn right, 'l' means turn left, and '[' 
means store current position and direction, and ']' means restore last 
saved position and direction(I don't know if Lindenmiener(?) used 
these commands or not, but they work for me).  Take a simple string, 
like the above d[rd]d, it says 'draw, store position and heading, turn right, 
draw, reload position and direction just saved, draw.'
Looking like this:
					   |  /
					   |/
					   |
					   |
Now bringing that to depth 2 it would look like this(sorry about the 
drawings!):
					   |  /   /
					   |/   /------
					   |  /
					   |/
					   |  /
					   |/
					   |
					   |

A List of the Commands you can use:
------------------------------------------------

	These commands are the ones used in the 3-Dimensional L-
System I've employed.

d  ----------- draw:
	This 'd' means either draw or place original string here mattering 
	on the depth you carry you're plant to.
l  ------------ turn left
r  ------------ turn right
o  ------------ turn out(towards you)(the negative z-axis direction)
i  ------------ turn in(away from you)(the positive z-axis direction)
[  ------------ store current position, heading, size of cylinder
]  ------------ loads last saved position, heading, size of cylinder
Ln  ----------- multiplies the current cylindrical length(starts out at 10) 
		by (n/10)
					-----n must be one-digit-----
Rn  ----------- multiplies the current cylindrical radius(starts out at 2) by 
		(n/10)
					-----n must be one-digit-----
Xn ------------ multiplies the current horizontal(e.g. right or left) angle 
		turn(starts out at 30 degrees) by (n/10)
					-----n must be one-digit-----
Yn ------------ multiplies the current depthical(e.g. in or out) angle 
		turn(starts out at 30 degrees) by (n/10)
					-----n must be one-digit-----

How to use this with POVRAY
---------------------------------------

	This program will write a file to the current directory called 
'plant.inc' which will be a standard include file with the definition of a 
structure called a Plant.  This Plant will be made up of many 
cylinders( one cylinder for each time it draws).  You can then use this 
include file normally and call the structure 'Plant' like you 
would call any structure or CSG object.(don't forget to include the include 
directive with 'plant.inc' at the top of the file)


Legal Mumbo Jumbo
---------------------------

	I, being only 16, know absolutely nothing about the law, except 
its a joke( We're given the right to a trial, not the right to sue someone 
for millions of dollars if you slip on their floor, its your own fault ya 
bastard)  On that note...

	I guess I'd like some $ for this product, I mean lets face the facts, 
if you don't pay me, I ain't got time to catch you.  All the same, this 
took quite a bit of mathematical research to create and harness( even 
though it is still kinda cheesy right now).  I guess somewheres about 
five to, oh say, 2000 dollars would be good.  Reasons for paying: good 
karma, you'll get the latest version, you'll be supporting me, the 
Westport U-16 soccer team is going to Europe and we need to raise 
about 30,000 dollars, I'll personally send you a list of my latest 
products(?).  Most importantly, as a mathematician, I pose to you a 
social dilemma:
	If I don't raise 250 dollars with this product, I won't come out 
with another version!( so some of you gotta pay, if you like it!  or 
maybe you should just let the other guy pay for it? But then what if 
enough isn't raised?  Should you work for the common good or your 
own personal benefit? )

	Lastly, legally speaking, I am not responsible for any effect this 
program has on you, your computer, your dog, your house, your 
sanity, your neighbor, or anything else related to you.  I give my word 
that my intentions are only of the most noble qualities and any errors, 
crashes, etc. were not planned.

	Oh! by the way, This program is not related at all to the 
POVRAY program.  It was made for use with it, but is not at all 
affiliated with the POVRAY developers.

Send $ to:
----------
Steve O'Dell
6 Ivanhoe Lane
Westport, CT 06880-5038


String to try:
---------------
L8R8d[rd][od][ld][id]d[rd][od][ld][id]
4 levels deep
	This string takes 6561 cylinders to build!!!!

One last note:
---------------
Sometimes a cylinder will become so short it will be called a Degenerate
cylinder by POVRAY(you wouldn't be able to see it), if this occurs, try
setting the value after the L command a little bigger.! 

HAVE FUN!!! (and pay too)...
