- XLogo
This program uses features from Random Trees to generate a series of 'natural' looking trees. It does this by using
three parameters:
1) RandomAng This can be one of 8 values between 24 and 80
degrees. It determines the angle between two branches and is the same
for the whole tree.
2) RanTreeAng This can be one of 5 values between 1/4 and 3/4
of the RandomAng. It determines the angle from the end of one branch
to the next drawn tree. It is different for each new tree.
3) RanBraLen This can be one of 3 values 0.7, 0.75 or 0.8.
It determines how much shorter branches in the next tree are. It is
different for each new branch.
To New
# set default screen, pen and turtle values
ResetAll SetScreenSize [400 400] HideTurtle
SetSC Black SetPC Green SetPS 1 PenUp
End
To TreeCol :Length
Make "Green Round 2.5*(100-:Length) # green depends on length
Output ( List 255 :Green 0 ) # red set to 255 and blue to 0
End
To Tree :Length
If :Length< 10 [Blossom Stop] # ends recursion if branch too small
SetPW :Length/9 # reduce pen width as branch length gets smaller
SetPC TreeCol :Length # branch color depends on length
LocalMake "Angle Pick [24 32 40 48 56 64 72]
LocalMake "TreeAngle :Angle*Pick [0.25 0.375 0.5 0.625 0.75]
Forward :Length
Left :TreeAngle
Tree :Length * Pick [0.7 0.75 0.8] Right :Angle
Tree :Length * Pick [0.7 0.75 0.8] Left :Angle
Right :TreeAngle
PenUp Back :Length PenDown # return to starting point
End
To Blossom
Make "myPenCol PenColor Make "myHeading Heading
SetPC 6 SetH 180
Forward 5 Back 5 SetPC :myPenCol SetH :myHeading
End
To Go
Repeat 99 [ New Back 160 PenDown Tree 80 Wait 200]
End