本篇博客介绍如何用turtle绘制分形树和五角星,分形树效果如下:
绘制五角星十分简单,要点如下:
从七点开始直线绘制一个边长度 到达顶点后旋转144度 重复这个过程 实现代码import turtle
from turtle import Turtle
p=Turtle()
p.goto(-100,-50)
p.speed(3)
p.pensize(5)
p.color("yellow","skyblue")
p.begin_fill()
for i in range(5):
p.forward(400)
p.right(144)
p.end_fill()
turtle.done()
效果如下:
绘制分形树
分形树的绘制我们可以采用递归的方法:
分形树由左右两个子树构成 每次绘制时,遍历已有的树枝 在每个树枝上绘制左枝,绘制右枝 将新绘制的树枝加入新的集合中 递归处理新的树枝集合 递归过程中削减画笔的size,使其越来越小 递归过程中随机生成画笔颜色 实现代码:import turtle
from random import choice
from turtle import Turtle
def colors():
return (choice(range(256)),choice(range(256)),choice(range(256)))
def tree(plist,l,a,f,size):
if(l>1):
lst=[]
for p in plist:
p.color(colors())
p.pensize(size)
p.forward(l)
q=p.clone()
p.left(a)
q.right(a)
lst.append(p)
lst.append(q)
tree(lst,l*f,a,f,0.82*size)
def makeTree(x,y):
p=Turtle()
turtle.colormode(255)
p.pensize(100)
p.hideturtle()
p.getscreen().tracer(30,0)
p.left(90)
p.penup()
p.goto(x,y)
p.pendown()
t=tree([p],350,65,0.6475,10)
turtle.done()
print(len(p.getscreen().turtles()))
def main():
makeTree(0,-450)
main()
效果图: