使用Turtle画多边形总结

使用Turtle画多边形总结


说明:下方所有的绘制都是满足一笔画的,因为一笔画才总结于此,但是我感觉turtle的意义应该在于起笔落笔和循环,加上笔者学的不精,全为个人看法,所以提前说明。

多边形画法总结

方法一:使用转向画图

原理:一个正多边形有n条边,正多边形的内角和为 ( n − 2 ) ∗ 180 \left( {n - 2} \right)*180 (n2)180,那么每个角的度数则为 180 + 360 n 180 + \frac{{360}}{n} 180+n360,所以每个角的角度是 360 n \frac{{360}}{n} n360
实践

  • 绘制边长为 100 的五边形
import turtle as t
for i in range(5):
    t.fd(100)
    t.left(360/5)
  • 绘制边长为 100 的六边形
import turtle as t
for i in range(6):
    t.fd(100)
    t.left(360/6)

方法二:使用 circle 画图

原理:下面是 python-3.8.2 里关于 circle 的描述

turtle. circle(radius, extent=None, steps=None)参数

  • radius – 一个数值

  • extent – 一个数值 (或 None)

  • steps – 一个整型数 (或 None)
    绘制一个 radius 指定半径的圆。圆心在海龟左边 radius 个单位;extent 为一个夹角,用来决定绘制圆的一部分。如未指定 extent*则绘制整个圆。如果 *extent 不是完整圆周,则以当前画笔位置为一个端点绘制圆弧。如果 radius 为正值则朝逆时针方向绘制圆弧,否则朝顺时针方向。最终海龟的朝向会依据 extent 的值而改变。
    圆实际是以其内切正多边形来近似表示的,其边的数量由 steps 指定。如果未指定边数则会自动确定。此方法也可用来绘制正多边形。

实践

  • 绘制一个六边形
import turtle as t
	t.circle(100,None,6)

缺点:无法直接看出边长,边长 L = 2 ∗ r ∗ sin ⁡ ( 180 n ) L = 2*r*\sin (\frac{{180}}{n}) L=2rsin(n180)


星形多边形画法总结

方法一:使用转向画奇数星形多边形

原理

  • 星形多边形存在外接圆,每个角的度数等于对应弧度所对应的角的一半,所以 n 角星的每个角为 180 n \frac{{180}}{n} n180,所以转向度数为 180 − 180 n 180 - \frac{{180}}{n} 180n180

实践

  • 绘制五角星
import turtle as t
for i in range(5):
    t.fd(100)
    t.left(180-180/n)

方法二:使用转向画偶数星形多边形

原理

  • 偶数星形多边形可以看成两个奇数星形多边形组成,由上面的方法一可知,n 角星的每个角为 360 n \frac{{360}}{n} n360,所以转向度数为 180 − 360 n 180 - \frac{{360}}{n} 180n360
  • 注意到 180 n \frac{{180}}{n} n180 360 n \frac{{360}}{n} n360成倍数关系,也就是说在画偶数星形时,求出的每个角的角度会与画奇数星形的每个角度相同,也就是两个奇数星形多边形重合了,因此这种偶数星形画不出来。要排除这种情况,只需要该偶数能够分解两个偶数相乘,就可以避免这种情况,一定可以一笔画出来。

实践

  • 绘制六边形
import turtle as t
for i in range(6):
    t.fd(100)
    t.left(180-360/6)
  • 绘制八边形
import turtle as t
for i in range(8):
    t.fd(100)
    t.left(180-360/8)

参考链接

多边形
五角星
六角星
Python turtle 画正多边形和多角形

  • 11
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值