使用Turtle画多边形总结
说明:下方所有的绘制都是满足一笔画的,因为一笔画才总结于此,但是我感觉turtle的意义应该在于起笔落笔和循环,加上笔者学的不精,全为个人看法,所以提前说明。
多边形画法总结
方法一:使用转向画图
原理:一个正多边形有n条边,正多边形的内角和为 ,那么每个角的度数则为 ,所以每个角的角度是。
实践:
- 绘制边长为 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)
缺点:无法直接看出边长,边长
星形多边形画法总结
方法一:使用转向画奇数星形多边形
原理:
- 星形多边形存在外接圆,每个角的度数等于对应弧度所对应的角的一半,所以 n 角星的每个角为,所以转向度数为
实践:
- 绘制五角星
import turtle as t
for i in range(5):
t.fd(100)
t.left(180-180/n)
方法二:使用转向画偶数星形多边形
原理:
- 偶数星形多边形可以看成两个奇数星形多边形组成,由上面的方法一可知,n 角星的每个角为,所以转向度数为
- 注意到 和成倍数关系,也就是说在画偶数星形时,求出的每个角的角度会与画奇数星形的每个角度相同,也就是两个奇数星形多边形重合了,因此这种偶数星形画不出来。要排除这种情况,只需要该偶数能够分解两个偶数相乘,就可以避免这种情况,一定可以一笔画出来。
实践:
- 绘制六边形
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)