Project 8 is about using the Lsystem and Interpreter module as class that contains data fields and methods. Task1 is to create a scene of trees and their own base-rule text. Task2 is to create a forest scene composed of at least three different types of trees, which at least one of them is using a multiple rule. Task3 is to create a scene of an modified versions of an Lsystem with three different iterations.
In task1, I have three Lsystem tree: systemB.txt, systemC.txt, and systemF.txt, where the first one is a one-rule lsystem and the last two are multiple-rule lsystem. In my Interpreter module, in the drawstring method, I add some new codes that can read the text in any lsystem and store it into the drawstring methods.
In drawString(self, dstring, distance, color, angle, text=None ):
elif c == 'T':
turtle.write(text, False, 'center', ('Time New Roman', 14, 'bold'))
To call the text to be drawn in the scene, I call: inter.drawString('T', distance = 14, color ='black', angle = 0, text=str(lsys) )
I use the same methods for all the three trees (lsystem)
In task2, I call for loop to draw each type of tree as many as I want. I randomize the x and y coordinates of the each for each loop so that each tree will be placed randomly in these coordinates. I also randomize the distances of the trees so that I can obtain different sized trees.
In task3, first I make changes in one Lsystem as shown below:
rule F-> F+FF-FF
rule F -> F-FF-F-F[+FF+F+F]
Then I set iterations to 2, 3, and 4 and I obtain the scene as required.
In extension, I choose to create a scene that has some modification on each tree’ angle and distance.
I also change the methods of creating the forest by randomization the x-coordinates of each three called in each y-position that is looped through five time each.