Python之turtle模块-正多边形

2020-08-06 00:15:26 浏览数 (1)

前面我们用turtle画了正方形,也就是正四边形,虽然我们平时不这么叫它。我们今天来画正多边形。顾名思义就是边数大于等于三条,并且每条边的长度都一样。美国的五角大楼就是正五边形。

八卦阵是一个正八边形

初中老师又浮现在我的脑海里~,当初讲的那些定义又浮现在眼前。我用python画了个示意图,然后用画图板(大神都用ps,我比较接地气)写了个注释,大家就将就着看看吧!

中心角

任何一个正多边形,都可作一个外接圆。多边形的中心就是所作外接圆的圆心,所以每条边的中心角,实际上就是这条边所对的弧的圆心角,因此这个角就是360度÷边数。所以五角大楼的中心角是360/5=72°。

底角

知道了等腰三角形的顶角之后,底角为(180-顶角)/2。这里的顶角就是中心角。

外角

与正多边形的内角相对应的是外角,多边形的外角就是将其中一条边延长并与另一条边相夹的那个角。可以看到180-2*底角=外角,而中心角也是180-2*底角(三角形内角和是180),因此正多边形的外角等于中心角。

初中老师可以休息了,下面我们来看一下如何用tutle来画正五边形的过程。

  1. 初始状态下箭头水平向右,我们向前移动一个边的长度
  2. 这时候箭头还是水平向右的,我们需要把它调整到第二条边的方向上。只需要向左旋转一个外角的度数,为360/5=72°。
  3. 接下来要做的事情就是重复前面的两步,重复四次,把剩下的四条边都画出来。前面也讲过重复的事情可以用循环来做。

下面我们就来写代码实现这个过程。

代码语言:javascript复制
import turtle


# 定义画多边形的函数,有三个参数
# t是turtle对象,n是多边形的边数,length是边的长度
def polygon(t, n, length):
    # 中心角为360/n
    angle = 360 / n
    # 循环n次画出正n边形的n条边
    for i in range(n):
        # 画边
        t.fd(length)
        # 旋转箭头,因为旋转的角度为外角的角度,刚好也等于中心角
        t.lt(angle)

# 创建一个turtle对象
bob = turtle.Turtle()
# 画一个正五边形,边长是80
polygon(bob, 5, 80)
# 提起笔往右移动200的距离
bob.pu()
bob.fd(200)
bob.pd()
# 画正八边形
polygon(bob, 8, 50)
turtle.mainloop()

来看看具体执行过程

0 人点赞