博客简介
本篇博客介绍如何用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()
效果图: