关键词:Python/ target=_blank class=infotextkey>Python 、 万花尺 、 turtle 、 fractions 模块 、 math 模块
开发环境:PyCharm
版本:python 3.9.5
【使用 python 绘制万花尺】前言
小时候我们使用设计工具,以落点为原点,沿外层工具大小画出不规则的图案,即为万花尺
文章插图
万花尺
原理
大小齿轮的齿数之比,约为最简分数时,其分母就是小齿轮沿大齿轮的公转数,分子就是花瓣数,分子和分母的差就是小齿轮的自转数
公式
文章插图
效果图
文章插图
效果1
文章插图
效果2
文章插图
效果3
关键代码
# 初始化光标参数def setparams(self, xc,yc,col,R,r,l):# 设置相关轴线、角度、步长、颜色等self.xc = xcself.yc = ycself.R = int(R)self.r = int(r)self.l = lself.col = col# 计算最小公约数gcdVal = math.gcd(self.r, self.R)self.nRot = self.r# 得到半径比例self.k = r / float(R)# 设置颜色self.t.color(*col)# 初始化角度self.a = 0
# 绘画线条def draw(self):# 循环画出其余线条R,k,l = self.R,self.k, self.lfor i in range(0, int(360 * self.nRot + l), self.step):a = math.radians(i)x = R * ((l-k) * math.cos(a) + l * k * math.cos((l-k) * a / k))y = R * ((l-k) * math.sin(a) - l * k * math.sin((l-k) * a / k))self.t.setpos(self.xc + x, self.yc + y)# 绘画完成后隐藏光标self.t.hideturtle()
# 根据步长进行更新坐标def update(self):# 判断绘画是否完成,是则跳过if self.drawingComplete:return# 增加描绘角度self.a += self.step# 根据步长绘制R,k,l = self.R, self.k, self.l# 设置角度a = math.radians(self.a)# 根据如上公式进行计算x = self.R * ((l - k) * math.cos(a) + l * k * math.cos((l - k) * a / k))y = self.R * ((l - k) * math.sin(a) - l * k * math.sin((l - k) * a / k))self.t.setpos(self.xc + x, self.yc + y)# 如果绘画完成,则标记if self.a >= 360 * self.nRot:self.drawingComplete = True# 绘画完成后隐藏光标self.t.hideturtle()
https://pan.baidu.com/s/1ly15zaPWr-L2guKJGk6VmQ提取码: 62wj 复制这段内容后打开百度网盘手机App,操作更方便哦
推荐阅读
- 看似简单但使用率非常高的7个Excel技巧,都在此文,速度围观!
- Python Web 框架:你需要知道的一切
- 使用 Apache Kafka 构建您自己的社交媒体分析
- 饵料|用蚯蚓钓鱼的技巧和弊端,只有使用得当,才能发挥蚯蚓的作用
- 显微镜使用方法 显微镜的使用步骤
- 明朝太子俸禄?明朝亲王俸禄_1
- 投影仪的正确使用方法 投影仪怎么使用
- 打阿奇可以喝酒吗
- 钱币|这种已经不再使用的1元硬币,旧的也可以达到几十一枚
- 机械硬盘和固态硬盘对比图,机械硬盘和固态硬盘对比,在使用寿命方面,谁更长-