当前位置:首页>python>Python教程(24)turtle库综合案例:从静止到流转,用海龟画出一个会动的太极

Python教程(24)turtle库综合案例:从静止到流转,用海龟画出一个会动的太极

  • 2026-10-11 05:35:12
Python教程(24)turtle库综合案例:从静止到流转,用海龟画出一个会动的太极

你好,我是雨霖八珞,同名B站UP主。关注合集不迷路。以下内容为个人教学,真诚分享,欢迎交流。

在上一篇我们已经介绍过太极图的一种画法。

今天我们继续写代码,让太极图动起来。

要让太极图动起来,首先得会画太极图。

如何画太极图?

详细内容可以参看Python教程(23)turtle库综合案例:绘制太极图

建议伙伴们先看👆,再来看这篇文章


太极图动起来的本质

先来分析,如何让太极图动起来

我截取了太极图动图的三个瞬间

善于动脑筋的小伙伴发现了没有?

太极图还是那个太极图,画法还是一样,那不一样的是什么?

对了,就是开始绘制的起始位置和初始方向不一样

太极图能“动”起来,本质上就是不断地清空和重画,每次重画时角度改变一点点。

循环:

    绘制下一个瞬间

    停一会儿

    清空

因为人的眼睛有视觉暂留特性,画面消失后,影像会在视网膜上不会马上消失,所以当我们快速切换画面时,大脑会自动把它们“连接”起来,形成连续运动的错觉。

简单回顾一下太极图的画法

太极图可以分为黑色部分(左)、白色部分(右)、小白点(上)、小黑点(下)

先看左侧的黑色部分轮廓的画法:

让小海龟先走到底部,方向向左

  • 顺时针画红色半圆:turtle.circle(-200,180)

  • 顺时针画绿色半圆:turtle.circle(-100,180)

  • 逆时针画蓝色半圆:turtle.circle(100,180)

  • 三个半圆首尾相连,画出一个封闭区域,填充成黑色

再看右侧的白色部分的画法:

从底部逆时针画半圆(红线所示),补全整个外框。

剩下的小黑点和小白点需要定位,画圆,相对来说比较简单。

让程序规范起来

在上一篇介绍太极图画法的文章中,我有一些小疏漏,依靠眼力去判断圆的半径,数字比较随意。

比如

截图中的-200,100,25都是什么?

可读性不好,修改起来也比较麻烦。

我们让程序规范一点。

如下图所示:

让最大圆(红色圆)的半径为r1,中间圆(绿色圆)的半径为r2,最小圆(蓝色圆)的半径为r3

规范后的程序如下图所示:

可以看到,不管是定位,还是画圆,都是用r1,r2,r3来表示,而不是直接用数字来表示。

这一点很重要,因为让太极图动起来的时候,就可以根据 r1 的值自动调整所有相关尺寸,不需要一个个去改。

旋转起来吧

前面分析过,太极图的画法不变,就是每次重画时改变起始位置和初始方向。

所以加了for循环,循环500次,不停地重画。

关键语句说明:

1、turtle.right(90+10*n)

在for语句里画太极图的部分只修改了画笔初始定位的这个语句

也就是每次重画时,让小海龟向右多偏移10°,然后往下走

于是就改变了画大圆的起始位置和初始方向。

n的初值为0(n=0在循环外设置)

每次进入循环就自动加1(在准备下一帧里有)

2、turtle.tracer(False)和turtle.update()

这两行语句需要搭配使用,不需要每次显示绘制过程,需要注意的是turtle.update()必须放在for循环里面,表示每次循环前都显示最终结果。

3、time.sleep(0.05)和    turtle.clear()

显示太极图画面后,需要停顿0.05秒,然后清除画面

你还可以怎么改呢?

  • 修改r1的值,可以更改太极图的比例

  • 修改time.sleep()的值,可以看看转动是否更流畅

  • 修改turtle.right(90+10*n)的值,可以控制太极图旋转的速度

  • ……

本篇文章的完整代码比较长,提供下载。

可以关注公众号,在后台回复关键词:旋转太极图,即可获取下载链接。

本公众号内容均为原创。如需转载或引用,请先联系我。谢谢你的尊重。

觉得不错的话,伙伴们记得关注、转发和点赞哈!

最新文章

随机文章