python 中使用turtle库 —— 绘制叠加等边三角形
前言
在Python中,Turtle库是一个强大的图形绘制工具,它允许我们通过简单的命令和函数来绘制各种复杂的图形。今天,我们将通过Turtle库来绘制一系列叠加的等边三角形,每个三角形都会比前一个稍小一些,并且使用彩虹色的渐变效果。下面将一步步指导你如何完成这个任务。
第一步:准备环境
首先,你需要确保你的Python环境已经安装好。然后,我们可以开始编写代码。在你的代码编辑器中,输入以下代码来导入Turtle库并给它起一个别名pic
,这样我们可以更简洁地调用它的函数。
import turtle as pic
第二步:设置颜色和起始点
为了增加视觉效果,我们将使用一个包含多种颜色的列表colors
。另外,我们还需要保存初始位置,以便每次绘制新的三角形时都可以从这个位置开始。
colors = ['red', 'orange', 'yellow', 'green', 'blue', 'indigo', 'purple', 'white']
point = pic.pos()
第三步:绘制叠加的等边三角形
现在,我们将开始编写主循环来绘制叠加的等边三角形。我们将使用两个嵌套的循环:外部循环控制三角形的数量,内部循环则用于绘制每个三角形。
外部循环
外部循环将遍历range(7)
,这意味着我们将绘制7个叠加的三角形(从最大到最小)。在每次循环中,我们将设置画笔颜色、将画笔移动到起始位置,并绘制一个等边三角形。
for i in range(7):
pic.setheading(0) # 设置画笔朝向为0度(正东方向)
pic.color(colors[i]) # 选择颜色
pic.penup() # 提起画笔,移动不留痕迹
pic.goto(point) # 将画笔移动到起始位置
pic.pendown() # 放下画笔,移动留下痕迹
# ... 绘制等边三角形的代码将放在这里 ...
# 在每个三角形绘制完毕后,我们需要将画笔向前移动一些距离,以便为下一个三角形腾出空间
pic.setheading(0)
pic.forward(30)
内部循环
内部循环将用于绘制每个等边三角形。我们将使用begin_fill()
和end_fill()
函数来填充三角形。另外,我们需要确保在绘制第一个三角形的最后一个边时更新起始点point
,以便下一个三角形可以从正确的位置开始。
for j in range(7-i):
pic.begin_fill() # 开始填充
for k in range(3):
if(j==0 and k==2):
point=pic.pos() # 更新起始点(只在第一个三角形的最后一个边更新)
pic.forward(30) # 向前移动30个单位
pic.left(120) # 逆时针旋转120度
pic.end_fill() # 结束填充
第四步:隐藏画笔并结束绘制
当所有的三角形都绘制完毕后,我们可以使用hideturtle()
函数来隐藏画笔,并使用done()
函数来确保窗口保持打开状态,直到用户关闭它。
pic.hideturtle()
pic.done()
完整代码
将以上所有部分组合在一起,我们得到完整的代码:
import turtle as pic
colors = ['red', 'orange', 'yellow', 'green', 'blue', 'indigo', 'purple', 'white']
point = pic.pos()
for i in range(7):
pic.setheading(0)
pic.color(colors[i])
pic.penup()
pic.goto(point)
pic.pendown()
for j in range(7-i):
pic.begin_fill()
for k in range(3):
if(j==0 and k==2):
point=pic.pos()
pic.forward(30)
pic.left(120)
pic.end_fill()
pic.setheading(0)
pic.forward(30)
pic.hideturtle()
pic.done()
运行这段代码,你将看到一个由彩虹色渐变的叠加等边三角形图案在屏幕上显示出来。每个三角形都比前一个稍小一些,形成了漂亮的视觉效果。
进阶
将代码两处的 setheading 的参数都改成15,你会看到一个斜着的三角形
setheading
函数介绍
在 Python 的 turtle
模块中,setheading
函数用于设置海龟(turtle)的方向或朝向。这个函数接受一个角度值(以度为单位)作为参数,并将海龟的朝向设置为该角度。默认情况下,海龟的初始朝向是向东(即0度)。
使用方法
使用 setheading
函数时,你可以通过传递一个整数或浮点数来指定海龟的朝向。这个角度是相对于正东方向(0度)的偏移量。正数表示顺时针旋转,负数表示逆时针旋转。
例如:
turtle.setheading(90)
将使海龟朝向北方(正北方向是90度)。turtle.setheading(-90)
将使海龟朝向西方(正西方向是-90度或270度)。turtle.setheading(45)
将使海龟朝向东北方向(45度)。
示例代码
下面是一个简单的示例代码,展示了如何使用 setheading
函数来设置海龟的朝向:
import turtle
# 创建一个新的海龟对象
t = turtle.Turtle()
# 设置海龟的朝向为北方(90度)
t.setheading(90)
# 向前移动100个单位,由于海龟朝向北方,所以它将向上移动
t.forward(100)
# 等待用户关闭窗口
turtle.done()
在这个示例中,我们首先导入了 turtle
模块,并创建了一个新的海龟对象 t
。然后,我们使用 setheading
函数将海龟的朝向设置为北方(90度)。接着,我们使用 forward
函数使海龟向前移动100个单位。由于海龟现在朝向北方,所以它将向上移动。最后,我们使用 turtle.done()
函数来保持窗口打开,直到用户关闭它。
通过使用 setheading
函数,你可以精确地控制海龟的朝向,从而绘制出具有特定方向和形状的图形。
- 点赞
- 收藏
- 关注作者
评论(0)