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

方法一 使用循环绘制

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

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

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

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

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

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

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

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

3×120=4×90=3603 \times 120 = 4 \times 90 = 360。从而记忆 360 度这个关键角度。

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

假设一个正多边形有 n 条边,正多边形的内角和为 (n2)×180(n - 2) \times 180^\circ

那么每个角的度数则为 (n2)×180n=180360n\frac{(n - 2) \times 180^\circ}{n}=180^\circ-\frac{360^\circ}{n}

每个角的转角是 180(180360n)=360n180^\circ-(180^\circ-\frac{360^\circ}{n})=\frac{360^\circ}{n}

方法二 使用 turtle circle 方法

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

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

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

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

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

Python
t.circle(100,None,6)

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

总结

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