scratch编程入门与算法进阶的课程(巧用编程软件Scratch再现千年算法)

scratch编程入门与算法进阶的课程(巧用编程软件Scratch再现千年算法)(1)

如果说万有引力是牛顿的小苹果,那么圆周率一定是砸中冲之大叔的那只小苹果,因为祖冲之的家喻户晓主要源于“圆周率”π。

祖冲之到底是采用什么样的方法获得这个π值(3.1415926~3.1415927)的呢?

根据古籍记载,三国时期伟大的数学家刘徽利用“割圆术”把圆内接正多边形的面积一直算到了正3072边形,由此而求得了圆周率为 3.1415和 3.1416这两个近似数值。

scratch编程入门与算法进阶的课程(巧用编程软件Scratch再现千年算法)(2)

编程汪查了资料,祖冲之大师推理的具体方法已无据可考,但是很多资料和权威人士倾向于认为祖冲之采用的也是割圆术的方法。

scratch编程入门与算法进阶的课程(巧用编程软件Scratch再现千年算法)(3)

截图来自维基百科

24576边形?这在当时的条件下绝对不是一个小的工程,这要耗费多大的心力和时间才能完成一次推导计算?

想到这里编程汪大胆做了一个假设:如果祖冲之有编程软件Scratch,是不是会取得更大的成绩?

为什么?因为用Scratch画圆简单方便直观啊。

下面我们一起看看用Scratch如何简单方便地画出圆以及圆的内接正多边形吧!

画圆之前,编程汪先给大家科普一下“割圆术”,这个看起来散发着尘土味儿的概念其实没有那么难懂啦。

我们上学的时候都知道圆的内接正多边形“正”的意思就是多边形的每条边都相等

除了圆的内接正三角形、正六边形,还会有圆的内接正七边形、内接正八边形、内接正九边形,以致无限。

scratch编程入门与算法进阶的课程(巧用编程软件Scratch再现千年算法)(4)

割圆术就是利用了“随着内接正多边形边数的增加,内接正多边形的周长和面积也会无限接近圆的周长和面积”这一原理。通过对内接正多边形周长和面积的计算,依据公式求得π值。

科普完毕,接下来编程汪就和大家一起看看如果祖冲之大师穿越,他将如何用Scratch如何简单方便地画出圆以及圆的内接多边形。

我们这次需要用Scratch画出几个圆作为背景,同时在这些背景上绘制出相应的内接正多边形 。

第一步,画圆。

首先,我们在Scratch里的背景区画一个圆,再用同样的方法多复制出几个背景圆。

scratch编程入门与算法进阶的课程(巧用编程软件Scratch再现千年算法)(5)

第二步,画内接正多边形。

画好圆以后,我们就要开始画内接的多边形了,这些多边形怎么画呢?

我们以画等边三角形为例:

只要确定每个角的旋转角度和每条边的边长,就确定一个圆的内接正多边形的形状。

先设计一个非常小的点作为角色,再多复制六个,待会画其他形状会用到。

选中三角形,添加“当小绿旗被点击”积木、控制里的等待1秒、画笔里的清空和抬笔积木,再添加将背景切换为背景1。

scratch编程入门与算法进阶的课程(巧用编程软件Scratch再现千年算法)(6)

准备完成,这样程序初始阶段舞台区只有一个圆,没有其它图形。

我们画圆的内接多边形,设置每个多边形的第一笔都是在同一个坐标(X4,Y164)的位置,即背景圆中图形最上方的中点即可。

顶点确定好以后再画正三角形,动脑想一想这个该怎么实现呢?

先确定每个角的旋转角度:

在舞台区每次角度需要向右旋转120度,所以我们让初始的面向角度是30度,右转120度后,就是150度,150度画出三角形第一条边,旋转120度画出第二条边,再旋转120度画出第三条边,这样画出来的图形就是等边三角形了。

scratch编程入门与算法进阶的课程(巧用编程软件Scratch再现千年算法)(7)

再确定每条边的边长:

我们可以通过移动鼠标,分别移动到圆上距离最远的两个点,观察这两个点的坐标,可以计算出圆的直径(半径*2),通过圆的直径和三角函数可以计算出三角形的三条边长。

scratch编程入门与算法进阶的课程(巧用编程软件Scratch再现千年算法)(8)

编程汪给大家算出来了,我们这个图形里三角形每条边长是Scratch里288步的长度。

scratch编程入门与算法进阶的课程(巧用编程软件Scratch再现千年算法)(9)

最后完善积木代码:

在三角形角色积木的最后添加“广播三角形画完”积木。接着把等边三角形的代码依次复制到正方形、正六边形和正八边形里。

scratch编程入门与算法进阶的课程(巧用编程软件Scratch再现千年算法)(10)

选中正方形,把正方形初始运行的条件改变成当接收到“三角形画完”,把背景切换、画笔颜色、重复执行次数,初始角度和旋转角度都进行相应修改,每次移动步数根据背景圆的大小也进行修改。

一个等边三角形就画好了,想一想我们用了哪些知识

scratch编程入门与算法进阶的课程(巧用编程软件Scratch再现千年算法)(11)

再看看比较难的正八边形:

让孩子动脑想一想,积木里的面向多少度方向和向右旋转多少度,其具体角度值又是如何得到的?

多边形的内角和是180*(n-2)度,所以正八边形每个角就是180*(8-2的差)再除以8得到135度,如图所示,它的补角就是45度,这也是我们每次需要向右旋转的度数,每次向右旋转45度。

scratch编程入门与算法进阶的课程(巧用编程软件Scratch再现千年算法)(12)

正八边形旋转一周是360度,所以每条边对应的内角就是45度。而每个顶角到正八边形中心的直线恰好平分这个顶角。

所得到的角就是135度的一半,也就是67.5度,她的对顶角也是67.5度,Scratch里竖直朝上是0度,往右旋转是正数角度,因此,画正八边形的初始角度也是67.5度。

好了,我们点击小绿旗运行下:

scratch编程入门与算法进阶的课程(巧用编程软件Scratch再现千年算法)(13)

看起来似乎随着多边形边数的增多,多边形越来越接近一个圆,我们继续增加边数,依次修改代码,画圆的内接正二十边形,正四十边形,正三百六十边形。

scratch编程入门与算法进阶的课程(巧用编程软件Scratch再现千年算法)(14)

(圆内接等边三角形、正八边形、正三百六十边形完整代码)

大家可以尝试下其余几个圆内接正多边形旋转角度和边长是如何算出来的

scratch编程入门与算法进阶的课程(巧用编程软件Scratch再现千年算法)(15)

可以看到内接正四十边形已经基本上与圆重合,而内接正三百六十边形,我们肉眼已经分辨不出是多边形还是圆形了。

一个简单的例子,就能让孩子从“知其然,更知其所以然”中感受数学的乐趣,激发学习兴趣,让孩子试着从另一种角度解读科学开拓思维,还能提高孩子对极限概念的理解哈。

撰稿:编程汪 bianchengshaonian

在X信 回复 “ 头条 ” 即可给孩子领取0元编程试听~

还有价值1000元的教育资源大礼包~

,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页