正多边形是指所有边和角都相等的多边形。它是一种简单的多边形,也是最常见的基本几何形状。

任务描述

本文将介绍如何通过Scratch编程绘制任意边数的正多边形,例如正方形、正五边形、正六边形等。

编程思路

编程思路很简单,只需要确定正多边形的边长和转角,每绘制完一条线段,就调整画笔方向,再绘制下一条线段,直至完成整个正多边形。

程序设计

为了更好地理解绘制的方法和过程,我们先编写一个程序绘制常见的正方形和正五边形,最后再实现任意正多边形的绘制。

1.绘制正方形

Scratch中的画笔模块为角色提供了与画图相关的功能和指令,只需要让角色在舞台上移动,就可以在舞台上画出移动轨迹。让我们来看一个简单的绘制直线程序示例,如下图所示:

[图1]

当点击绿旗时,小猫向前移动了100步,同时在舞台上画出了一条蓝色的运动轨迹,如下图所示:

[图2]

这就如同角色手握一只画笔,再添加积木块“落笔”之后,角色就可以根据程序的指令在舞台上绘制图形。

既然能够绘制一条直线,那么绘制正方形当然不在话下。为了更好地演示角色面向的方向,我们选择了一个小甲壳虫角色。

由于正方形有4条边,4个直角都为90度,因此我们只需要让角色移动一段距离之后,向右旋转90度,再移动一段相同的距离,向右旋转90度,以此类推,让甲壳虫移动、旋转4次,就可以绘制一个完美的正方形了。程序非常的简单,如下图所示:

[图3]

在绘制之前,我们需要进行一些初始化的工作,包括:

  • 将甲壳虫移到(-50,50)坐标处,确保绘制的图案处于舞台中心。这个不是必须的,可以根据需要进行设置。
  • 将角色面向90度,让甲壳虫沿着90度方向开始移动绘制。
  • 将舞台上绘制的内容全部擦除,确保每次绘制之前清空之前的内容。

点击绿旗按钮,执行程序,绘制出的正方形效果如下:

[图4]

[小技巧]:在右转90度指令的下方,添加一个等待1秒指令,可以更清楚地观察绘制的过程。你可以试试看。

2.绘制正五边形

既然正方形已经绘制好了,正五边形也就容易了。在刚刚的程序上稍作修改就可以绘制正五边形。不过,首先我们必须明确两个问题:

  • 正五边形有几条边?
  • 每次旋转多少度呢?

针对第一个问题,简单到不能再简单了,正五边形当然是5条边了,所以重复的次数设置为5次就可以了,移动的步数决定了边长的长度,这里就不再修改,继续使用100步。

针对第二个问题,每次旋转的角度是多少呢?我们一起来分析一下,话说,任意多边形的外角和都是360度,无论是三角形、四边形还是十边形,它们的外角和都是360度。那么正五边形的外角和是多少度呢?当然是360度啦。

你可能会问了,外角是谁,我不认识啊。且听我说来,如下图所标注的角都是外角,所有的外角度数相加是360度。而正多边形的每一个外角度数都是相等的,对于正五边形来说,每一个外角的度数是360 / 5 = 72度。

因此,角色每移动100步,向右旋转72度即可,绘制正五边形的完整程序如下图所示,标红部分表示修改的部分:

图6

运行程序,甲壳虫依然很快就画出了一个标准的正五边形,如图:

图7

绘制正五边形效果

3.绘制任意正多边形

你可能已经注意到,绘制正方形和正五边形的程序有很多相似之处,只有两个小的差别。你可能在考虑如何绘制不同的正多边形,但其实程序是相似的,我们只需要注意旋转角度和边长的大小。

例如,对于正三角形,它的每个外角都是360/3=120度,因此每次移动一定距离后需要旋转120度。对于正十二边形,每个外角是360/12=30度,因此每次移动一定距离后需要旋转30度。然而,随着边数的增加,移动距离应该相应减小,否则会产生奇怪的图形,如下图所示:

8.png

角色的绘制被舞台边缘阻挡

这是为什么呢?原因是舞台的边缘阻挡了角色的运动,改变了它正常的运动轨迹。解决这个问题的方法是适当减小边长,比如将它改为60步。程序如下所示:

(图9)

绘制正十二边形的程序

再次运行程序,这一次就完全正常了,如下图所示:

(图10)

绘制正十二边形的效果

对于不同的正多边形,绘制流程是相同的,只有3个地方需要修改:

  • 重复的次数,它决定正多边形的边数
  • 移动的步数,它决定边长的大小
  • 旋转的角度

其中,旋转角度和边数之间的关系是二者的乘积为360,即边数*旋转角度=360度。边长也与边数有关,边数越多,边长应越小,二者成反比例关系。为了简化程序,我们可以使用运算类积木块优化刚才的程序,优化后的程序如下所示:

(图11)

绘制正十二边形的优化代码

其中,移动步数使用了800/边数,这保证了当边数较少时,边长较大,当边数较多时,边长变短。这种方法非常灵活,当然,800是经过多次测试得到的,可以根据实际情况进行调整。

因此,我们可以使用这个程序绘制任意正多边形,只需要改变边数就可以了,其他部分不需要修改。有了这个程序,我们可以自由绘制需要的任意正多边形。等到学会制作自制积木时,我们可以将整个功能做成自制积木

标签: Scratch, Scratch编程, Scratch中国, 少儿编程, Scratch社区, Scratch编程社区, Scratch编程课程, Scratch编程教程