关键词:python、万花尺、turtle、fractions模块、math模块 开发环境:PyCharm 版本:python3。9。5 前言 小时候我们使用设计工具,以落点为原点,沿外层工具大小画出不规则的图案,即为万花尺 万花尺 原理 大小齿轮的齿数之比,约为最简分数时,其分母就是小齿轮沿大齿轮的公转数,分子就是花瓣数,分子和分母的差就是小齿轮的自转数 公式 效果图 效果1 效果2 效果3 关键代码初始化光标参数defsetparams(self,xc,yc,col,R,r,l):设置相关轴线、角度、步长、颜色等self。xcxcself。ycycself。Rint(R)self。rint(r)self。llself。colcol计算最小公约数gcdValmath。gcd(self。r,self。R)self。nRotself。r得到半径比例self。krfloat(R)设置颜色self。t。color(col)初始化角度self。a0绘画线条defdraw(self):循环画出其余线条R,k,lself。R,self。k,self。lforiinrange(0,int(360self。nRotl),self。step):amath。radians(i)xR((lk)math。cos(a)lkmath。cos((lk)ak))yR((lk)math。sin(a)lkmath。sin((lk)ak))self。t。setpos(self。xcx,self。ycy)绘画完成后隐藏光标self。t。hideturtle()根据步长进行更新坐标defupdate(self):判断绘画是否完成,是则跳过ifself。drawingComplete:return增加描绘角度self。aself。step根据步长绘制R,k,lself。R,self。k,self。l设置角度amath。radians(self。a)根据如上公式进行计算xself。R((lk)math。cos(a)lkmath。cos((lk)ak))yself。R((lk)math。sin(a)lkmath。sin((lk)ak))self。t。setpos(self。xcx,self。ycy)如果绘画完成,则标记ifself。a360self。nRot:self。drawingCompleteTrue绘画完成后隐藏光标self。t。hideturtle() https:pan。baidu。coms1ly15zaPWrL2guKJGk6VmQ 提取码:62wj复制这段内容后打开百度网盘手机App,操作更方便哦