海龟绘图-黄金螺旋
难度:⭐⭐⭐⭐⭐
1. 题目描述
题目描述
使用海龟绘图 turtle
绘制斐波那契黄金矩形&黄金螺旋
2. 关键点
- 海龟绘图
- 每个矩形第二条边的终点为下一个矩形的起点
- 每个矩形之间,海龟的朝向也是每次加 90°
3. 代码实现
点击显示代码
python
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)
4. 运行示例
5. 进阶思考
- 添加背景、颜色等
6. 请欣赏影片
片名:《Nature by Numbers》