Python 海龟绘图——多边形绘制总结

海龟绘图详解 Ju 5年前 (2019-07-06) 1492次浏览 5个评论

在 turtle 作图中,经常会遇到多边形。在这里对多边形的画法进行一个总结。

方法一 使用循环绘制

在 Python 海龟绘图中,可以使用循环绘制多边形。在这里可以利用公式 重复次数*转过角度=360。

例如,在绘制边长为 100 的五边形的时候。使用方法为

for i in range(0,5):
    t.fd(100)
    t.rt(360/5)

例如,在绘制边长为 60 的六边形的时候。使用方法为

for i in range(0,6):
    t.fd(60)
    t.rt(360/6)

此处在记忆中,可用三角形,正方形进行辅助记忆。

三角形重复 3 次,每次转过的角度为 120 度。

正方形重复 4 次,每次转过的角度为 90 度。

3*120=4*90=360。从而记忆 360 度这个关键角度。

在多边形绘制中,为什么转过的角度是 360/n 呢?

假设一个正多边形有 n 条边,正多边形的内角和为 $(n-2)*180$

那么每个角的度数则为 $\frac{(n-2)*180}{n}=180+\frac{360}{n}$

每个角的转角是 $180-(180-\frac{360}{n})=\frac{360}{n}$

方法二 使用 turtle circle 方法

使用 turtle 的 circle() 方法,可以进行绘制多边形。

circle() 函数有三个参数,依次是

  • radius — 一个数值
  • extent — 一个数值 (或 None)
  • steps — 一个整型数 (或 None)

circle() 方法的本质是以其内切正多边形来近似表示圆。第一个参数为圆的半径,第二个参数是圆转过的角度,第三个参数为边的数量。在使用时,只填写第一个和第三个参数即可。具体使用方法如下。

例如,在绘制六边形的时候。使用方法为

t.circle(100,None,6)

但是此种方法无法在已有知识体系下明确多边形的边长(具体边长的值为 $d=2*{r}*{sin(\frac{180} {n})}$

总结

两张方法都可以画出多边形。但方法二无法明确边长,因此推荐使用方法一完成日常绘图。


玩转 Python 海龟绘图 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:Python 海龟绘图——多边形绘制总结
喜欢 (9)
[tesths]
分享 (0)
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
(5)个小伙伴在吐槽
  1. 方法二中边长不应该是L吗?,我推的是L=2*r*sin(180/n)
    wljljl2020-03-27 00:48 回复
    • Ju
      感谢指正,已修改!
      Ju2020-03-27 17:01 回复
    • Ju
      您好,方便加个好友吗?红包奉上
      Ju2020-03-27 17:07 回复
  2. 我实在不清楚 t.(360/5) 这个怎么实现转动的?是不是少了left或者right?
    mao2021-06-20 03:42 回复
    • Ju
      已更新,谢谢!
      Ju2021-10-05 03:39 回复