点击上方「蓝色」字体关注我们
心电图爱心代码效果图
代码解释
导入库
-
import math, time, turtle -
这行代码导入了三个库:math(数学函数库),time(时间处理库),和 turtle(绘图库)。
初始化 turtle
-
t = turtle.Pen()turtle.setup(1.0, 1.0)turtle.bgcolor("black")t.color("red")t.ht() # 隐藏 turtle 图标t.pensize(4) -
这里创建了一个 turtle 画笔对象 t,并设置了绘图窗口的大小(单位不是像素,而是相对于屏幕的比例)、背景颜色、画笔颜色,并隐藏了 turtle 的图标。pensize(4) 设置了画笔的粗细。
主循环
a = 0temp = 0.02while True:...
主循环从 a = 0 开始,并使用 temp 变量来控制 a 的增量。该循环将持续运行,直到被外部因素(如用户中断)停止。
准备绘图
turtle.tracer(0) # 关闭自动更新,以便手动控制绘图更新t.clear() # 清除之前的绘图pos = [] # 初始化一个空列表来存储点的位置i = -1.81
在每次循环开始时,首先关闭自动绘图更新,然后清除之前的图形,并初始化一个空列表 pos 来存储新的点的位置。变量 i 是用于计算函数值的 x 坐标。
计算并存储点的位置
-
while i <= 1.81:t1 = (i**2)**(1/3)t2 = 3.3-i**2y = t1 + 0.9*(t2**0.5)*math.sin(a*3.1415*i),y*150-40])i += 0.01
这里计算了一个基于 i 的函数值 y,并将其与 i 一起存储到 pos 列表中。注意,这里的 x 和 y 坐标都乘以了一个缩放因子(150 和 150),并且 y 坐标还减去了一个常数(40),以便图形更好地适应绘图窗口。
绘制图形
-
t.penup()t.goto(pos[0][0],pos[0][1])t.pendown()for coo in pos:t.goto(coo[0],coo[1])turtle.update() # 手动更新绘图
首先,将画笔移动到列表 pos 中的第一个点的位置,然后开始绘制图形,遍历 pos 列表中的每个点,并使用 goto 方法移动到这些点。最后,使用 update 方法手动更新绘图。
更新变量 a 并控制循环
-
# 暂停一小段时间if a >= 10:temp = -0.02if a <= 8:temp = 0.02a += temp
这里首先暂停一小段时间(0.001 秒),然后检查 a 的值。如果 a 大于或等于 10,则设置 temp 为 -0.02,使得 a 减小;如果 a 小于或等于 8,则设置 temp 为 0.02,使得 a 增大。最后,更新 a 的值。
结束
-
turtle.done()
这行代码通常用于指示 turtle 绘图窗口在脚本完成后不要立即关闭。但在这种情况下,由于主循环是无限循环,所以这行代码实际上不会被执行。
-
√完整版代码
1.关注公众号
2.后台留言”心电图爱心“即可

