|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 古一2022 于 2022-8-31 18:26 编辑
先上代码:
- import turtle
- def fb(n):
- """斐波那契数递归函数"""
- if n <= 1:
- return n
- return fb(n-1) + fb(n-2)
- def draw_fb(n):
- """绘制斐波那契黄金矩形"""
- width = 10 # 1 单位的宽度,可看作放大倍数
- to_angle = 270 # 初始海龟朝向,朝南
- pos = (0, 0) # 初始海龟坐标
- for i in range(1, n+1):
- x = fb(i)
- x *= width
- ta = to_angle # 每个矩形的初始朝向
- # 回到每一个矩形的起始点,此时抬起画笔,不绘画
- turtle.penup()
- turtle.setpos(pos)
- turtle.pendown()
- # 绘制矩形的四条边
- for j in range(4):
- turtle.setheading(ta) # 设置矩形初始朝向
- turtle.forward(x) # 绘制边
- if j == 1: # 每个矩形第二条边的终点为下一个矩形的起点
- pos = turtle.pos() # 记录下一个矩形的起点
- ta += 90 # 绘制完一条边后转 90°
- turtle.setheading(to_angle) # 复位海龟朝向,准备绘制四分之一圆
- turtle.circle(x, 90) # 绘制四分之一圆
- to_angle += 90 # 绘制完一条矩形后转 90°
- turtle.exitonclick()
- if __name__ == '__main__':
- draw_fb(8)
复制代码
效果图展示:
|
|