绘制正多边形-Scratch画笔艺术

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

任务描述

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

编程思路

正多边形有两大特点:

  1. 所有的边长都相等
  2. 所有的角都相等

所以,我们只需要确定好正多边形的边长和转角,每绘制完一条线段,就调整画笔方向,再绘制下一条线段,直至完成整个正多边形。

程序设计

为了让初学者更好的学习和理解绘制的方法和过程,我们先来绘制常见的正方形和正五边形,最后再实现任意正多边形的绘制。

1.绘制正方形

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

Scratch画笔绘制直线程序
绘制直线程序

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

Scratch画笔绘制直线效果
直线绘制效果

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

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

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

Scratch绘制正方形程序
绘制正方形程序

注意,在绘制之前,我们做了一些初始化的工作,包括:

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

点击绿旗按钮,执行程序,绘制图案如下:

Scratch绘制正方形效果
绘制正方形效果

[小技巧]:可以在右转90度指令的下方,添加一个等待1秒指令,只有就可以更清楚的看到绘制的过程了,你不妨一试。

2.绘制正五边形

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

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

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

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

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

多边形的外角
多边形的外角

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

Scratch绘制正五边形

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

Scratch绘制正五边形效果
绘制正五边形效果

3.绘制任意正多边形

相信聪明的你已经发现了,绘制正方形和正五边形程序基本上是一样的,不同的只有两个小地方。你肯定在心里盘算着绘制出各种不同的正多边形,程序其实是差不多的,我们需要重点关注的是旋转的角度,同时要注意控制好边长的大小。

比如,正三角形,它的每一个外角是360 / 3 = 120度,那么角色每移动一段相同的距离后需要旋转120度。而正十二边形,它的每一个外角是360 / 12 = 30度,那么角色每移动一段相同的距离需要旋转30度。不过随着边数的增加,移动的距离应该相应的减小,否则就会画出奇怪的图形,如图所示:

舞台边缘挡住了角色的绘制
舞台边缘挡住了角色的绘制

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

Scratch绘制正十二边形程序
绘制正十二边形程序

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

Scratch绘制正十二边形效果
绘制正十二边形效果

针对不同的正多边形,绘制流程是完全一样的,程序也差不多,只有3个地方需要修改:

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

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

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

其中,这里的移动步数,使用了800 / 边数,这保证了边数较少的时候,边长大一点,而当边数较多时候,边长则变短,非常的灵活,当然这里的800经过多次测试得到,你可以设置为其它值,只要测试效果ok就行。

如此一来,我们绘制任意正多边形,只需要改变边数就可以了,其它的都不变,有了这个程序,我们就可以随心所欲的绘制自己所需要的任意正多边形了。等后面学到自制积木的时候,我们可以进一步将整个功能做出自制积木,使用起来就更加方便了哦。

回顾总结

  • 从简单任务开始,分析问题,找出规律,再解决复杂问题,这就是编程思维。
  • 重复的事情和繁琐的数学计算,尽量都交给计算机去完成。

© 版权声明
THE END
喜欢就支持一下吧
点赞10赞赏
分享
评论 抢沙发
diamondwang的头像-51scratch

昵称

取消
昵称表情代码图片