用turtle绘制分形树和五角星

博客简介

本篇博客介绍如何用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()


效果图:
在这里插入图片描述

发布了191 篇原创文章 · 获赞 377 · 访问量 5万+

猜你喜欢

转载自blog.csdn.net/weixin_44307065/article/details/104465502