Fractals and recursion are two ideas that were made for each other. In videos 48-51, we will be exploring the ideas around fractals, recursive functions, and using randomization to make designs more interesting and realistic.
from turtle import *
import random
screen = Screen()
intMin = 30
def drawBranch(intDist, intLevel):
if intLevel <= 5:
pensize((5-intLevel)**2+1)
else:
pensize(1)
intTravel = random.randint(int(intDist//1.5), int(intDist//.8))
print(intTravel)
forward(intTravel)
if (intDist > intMin):
intNB = random.randint(2,5)
intMaxAng = random.randint((intNB*20), (intNB*30))
intAvgAng = intMaxAng//(intNB-1)
intParentAng = heading()
left((intNB/2)*intAvgAng-(intAvgAng//2))
for branch in range(intNB):
intAV = random.randint(-5, 5)
drawBranch(int(intDist//1.5), intLevel+1)
right(intAvgAng+intAV)
setheading(intParentAng)
back(intTravel)
speed(0)
teleport(0,-300)
setheading(90)
drawBranch(150, 1)
screen.exitonclick()
from turtle import *
import random
from PIL import Image
screen = Screen()
intMin = 30
def drawLeaf(intSize):
liColors = ["green", "limegreen", "palegreen", "greenyellow", "mediumseagreen", "yellowgreen", "seagreen"]
color(random.choice(liColors))
intSize += random.randint(int(intSize*.9), int(intSize*1.1))
begin_fill()
circle(intSize, 120)
left(60)
circle(intSize, 120)
end_fill()
def drawBunch(intSize):
intHeading = heading()
for x in range(random.randint(3,5)):
right(random.randint(20, 350))
drawLeaf(intSize)
setheading(intHeading)
def drawBranch(intDist, intLevel):
if intLevel <= 5:
pensize((5-intLevel)**2+1)
else:
pensize(1)
intTravel = random.randint(int(intDist//1.5), int(intDist//.5))
print(intTravel)
color("sienna")
forward(intTravel)
if (intDist > intMin):
if intLevel > 4:
intNB = random.randint(2, 3)
else:
intNB = random.randint(2,(6-intLevel))
intMaxAng = random.randint((intNB*20), (intNB*30))
intAvgAng = intMaxAng//(intNB-1)
intParentAng = heading()
left((intNB/2)*intAvgAng-(intAvgAng//2))
for branch in range(intNB):
intAV = random.randint(-5, 5)
drawBranch(int(intDist//1.5), intLevel+1)
right(intAvgAng+intAV)
setheading(intParentAng)
else:
drawBunch(10)
color("sienna")
back(intTravel)
speed(0)
teleport(0,-300)
setheading(90)
drawBranch(150, 1)
screen.exitonclick()