Python turtle 画正多边形和多角形

  • 作正多边形
  • 作正多角形
    • 计算内角
    • 画图代码
  • 作棱角分明的多角形
    • 观察棱角分明的多角形
    • 简洁的结论
    • 代码
    • 代码存在的问题
  • 高斯与正十七边形
    • 作出正十七角形
  • 总结

原创文章,转载请申明出处

作正多边形

正n边形的内角:x = (n - 2) * 180° / n

import turtle# 正n边形参数
n = 7
x = (n - 2) * 180 / n# 调整画笔速度
turtle.speed(1)
# 调整画笔颜色
turtle.color('green')
# 调整画笔宽度
turtle.pensize(3)for _ in range(n):# 画笔向前移动turtle.forward(100)# 画笔方向顺时针旋转turtle.right(180 - x)turtle.done()

作正多角形

最简单的多角形就是五角星形

计算内角

下面是我的方法,如果同学有自己的方法,欢迎在评论区分享。

如图所示,五角星中间有个正五边形,计算得正五边形的内角为108°
图中的小三角形是等腰三角形,所以五角星的锐内角为(180 - 2*72) = 36°
正六边形,正七边形……同理。
所以得到正n角形锐内角公式:z = 2x - 180 其中:x = (n - 2) * 180 / n
化简得:z = (1 - 4/n) * 180°

画图代码

import turtle# 正n角形参数
n = 7
# 计算正n边形内角
x = (n - 2) * 180 / n
# 计算正n角形锐内角
z = (1 - 4/n) * 180# 调整画笔速度
turtle.speed(1)
# 调整画笔颜色
turtle.color('green')
# 调整画笔宽度
turtle.pensize(3)for _ in range(n):"""每次画一个角"""turtle.forward(50)turtle.right(180 - z)turtle.forward(50)turtle.left(180 - x)turtle.done()

作棱角分明的多角形

如果正n角形,每次都把两个相邻顶点连起来,那么随着n的增加,图像将趋近于

正19角形图如下:

所以,我们要让两个最远的顶点连起来

观察棱角分明的多角形



不妨大胆猜测规律:
n为奇数,棱角分明的正n边形锐顶角:w = (n-1)/2 * x - (n-3)/2 * 180
又 x = (n - 2)*180 / n
化简得:w = 180 / n
对于n为偶数,画图分析后,得出结论:w = 360 / n

简洁的结论

棱角分明的正n角形锐顶角w
w = 180 / n (n为奇数)
w = 360 / n (n为偶数)
统一公式:w = 90/n * (3+(-1)n)

代码

import turtle# 正n角形参数
n = 7
# 计算棱角分明的正n角形锐内角
w = 90/n * (3 + (-1)**n)# 调整画笔速度
turtle.speed(3)
# 调整画笔颜色
turtle.color('green')
# 调整画笔宽度
turtle.pensize(3)for _ in range(n):"""每次一条边加转向"""turtle.forward(150)turtle.right(180 - w)turtle.done()

代码存在的问题

代码根据锐顶角来画图,而锐顶角由结论来计算。

棱角分明的正n角形锐顶角w
w = 180 / n (n为奇数)
w = 360 / n (n为偶数)

存在奇数n1,偶数n2使得w1==w2。如3和6、5和10、7和14……
这些奇偶对得到的w相同,所以画出的图形相同。
想象中,正10角形是这样的:

实际上是这样的:

问题分析

  1. 只看奇数,所有的奇数中不可能产生相同的w。
  2. 偶数分为两类:是4的倍数不是4的倍数
  3. 不是4的倍数,360 / n 约去2后,变为 180 / 奇数,必存在一奇数的w与之相等。所以,程序无法画出(可以另写程序画出)。

高斯与正十七边形

李永乐老师讲正十七边形

下图是网友提供的高斯墓碑图:

作出正十七角形

总结

turtle画图形,方向旋转360°时,回到原来的方向,可以以此来计算循环画图次数。
画作多边形时,很多结论都是通过画图,肉眼观察出来的,缺乏严密证明。
最后,如果同学们发现文中错误,欢迎指正。

Python turtle 画正多边形和多角形相关推荐

  1. python turtle画熊-Python turtle画图库画姓名实例

    *****看一下我定义的change()和run()函数****** 绘图坐标体系: 作用:设置主窗体的大小和位置 ? 1 turtle.setup(width, height, startx, st ...

  2. python turtle画椭圆-【python turtle如何画椭圆】

    python turtle画4个同心圆方法 from turtle import * def Circle(radius,angle,length): for i in range(length): ...

  3. 如何用python画一个心形图_求问怎样用python/python turtle画“心”

    展开全部 python turtle画52614个同心圆方法 import turtle #draw first circle turtle.penup() turtle.goto(0,-200) t ...

  4. python turtle画房子详细解释_[宜配屋]听图阁

    我就废话不多说了,直接上代码吧! import turtle t=turtle.Turtle() turtle.Turtle().screen.delay(0) tleft=turtle.Turtle ...

  5. python创意turtle作品大白-Python turtle 画个大白

    今天用Python Turtle画个大白吧.效果图如下: Python画大白def bai(): #tracer(False) speed(0) pensize(5) color('black','w ...

  6. 利用python的turtle库绘制玫瑰的步骤_用python turtle画玫瑰

    1.turtle 库 2.画玫瑰的代码: import turtle turtle.penup() turtle.left() turtle.fd() turtle.pendown() turtle. ...

  7. qpython3手机版turtle_使用Python turtle画一片树林

    原标题:使用Python turtle画一片树林 使用Python Turtle绘制一片树林代码 这段代码结合了随机函数来使树林更多样化,同时设置了颜色的渐变.几乎每句都有注释,还有不懂的函数可以到官 ...

  8. python用turtle画月亮_使用python turtle画高达

    今天小编就为大家分享一篇使用python turtle画高达,具有很好的参考价值,希望对大家有所帮助.一起跟随小编过来看看吧 我就废话不多说了,直接上代码吧! import turtle t=turt ...

  9. 少儿学编程系列---使用python turtle画汽车

    少儿学编程系列---使用python turtle画汽车 原创cloudcoder2021-02-13 13:16:03 turtle简介 Turtle库是Python语言中一个很流行的绘制图像的函数 ...

最新文章

  1. 参加UI培训有发展吗?
  2. 高校网站群建设方案简介
  3. python安装包多大-如何查看安装的pip包大小?
  4. boost::math模块计算 Bessel 和 Neumann 函数的零点的测试程序
  5. Mysql 常用函数(19)- mod 函数
  6. ssh服务器拒绝了密码 请再试一次 Xftp5连接失败
  7. 大型企业网络设备管理
  8. 时序动作定位:Rethinking the Faster R-CNN Architecture for Temporal Action Localization(TAL-Net)
  9. VALSE学习(五):看图说话-Visual Question Answering as Reading Comprehension
  10. 因子分析模型 - 因子分析法原理与代码实现 -(Python,R)
  11. 基于c语言的串口通讯,基于C语言的RS232串行接口通信设计与实现
  12. 第二章 Hadoop序列化
  13. sinc函数卷积_两个矩形窗函数的卷积
  14. 出场顺序很重要下一句_一首年少有为告诉你:人生的出场顺序真的很重要
  15. 工业大数据分析建模和算法
  16. php开发路由器界面,PHP制作简单仿路由器登录界面
  17. 并发编程入门(五):Java并发包和Java8并发
  18. keytool 错误: java.lang.Exception: 密钥库文件不存在: keystore
  19. 解决source insight3.5的下面窗口丢失的方法
  20. ALLEGRO模块无法移动解决方案

热门文章

  1. 信息收集详情(高能集锦)
  2. 传奇私服架设(温故2002,自己制作传奇私服服务器)
  3. arduino 中断 串口_Arduino中断的使用
  4. 云储存技术的应用与用到的技术
  5. 我的世界java怎么写彩字_我的世界告示牌怎么打彩字 告示牌制作图文教程
  6. 国产替代:GD32F4xx替换STM32F4xx系统说明
  7. Quartz之Trigger
  8. android-控件之Textview属性
  9. 计算机四级数据工程师题库,全国计算机等级考试四级数据库系统工程师练习题...
  10. 前端诡异参数start