首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

编玩边学数学知识

青少年编程私教课

离不开我turtle

编程,首当其冲的是一种“数学思维”的训练和拓展。作为“上帝语言”的数学的重要性不言而喻。学好数学后可以说是你可以“横行”于各个学科的。其他学科都用“数学”为工具。以至于很久以前流传的“学好数理化,走遍天下都不怕”是非常有道理的。这一点相信大家都有体会。

让我们体会下数学之美,当然今天我们探讨几何图形的奥秘。

今天说的是“多边形”。多边形分“规则多边形”和“不规则多边形”,举例比如五边形,就像下面这样,有正五多边形和不规则的五边形。

正多边形比较有规律:正多边形的每个“内角”都相等,每个边的长度也都一样。这样的话,我在想让turtle来画一个正多边形,应该比较容易!

因为我要求的是画任意的正多边形,比如我想让它画个9边形或20边形!那怎么画呢?这就需要我们研究下正多边形的有关“内角”或“外角”的事了。

我们先研究“外角”吧(以六边形为例)。所谓外角就像下面的图片展示的那样:一边和另一相邻边的延长线的夹角(turtle乌龟转弯的角度,下面会说)。

正六边形的“外角”

每个正多边形的外角大小都是一样的,比如上面正六边形的每个外角是60度;正五边形呢?有的人可能会知道:72度;正四边形(正方形)呢?当然是90度了;正八边形的外角是45度;那正七边形呢?多少度?51.4285度。怎么算的呢?看了下面的动图你就理解了。

上图是正五边形,每个外角是72度。实际上我们看到了:无论是正几边形,所有的外角和都是360度,所以正n边形的每一个外角就是360/n了!好了!有了这个我们就能让turtle画任意多边形了。

正多边形的外角计算

乌龟画任意多边形的

让乌龟turtle来画任意正多边形,因为有了上面的外角计算方法,所以变得相当的容易了!因为你想一想:乌龟每次转弯的角度就是外角哦!所以我们可以设计一个“函数”——polygon,用它来画正多边形,它有两个参数:一个是边长,一个是边数。完整代码如下:

第10行我们“调用”了这个polygon函数画了一个7边形。你可以试验下,把7改成你想画的任意多边,比如10边形,20边形......但是你会发现,边数越大,最终越接近于“圆形”了,是不是?

五角星

为什么要画五角星呢?因为代码和上面的画多边形的函数polygon很相近,不信你看,画五角星的函数star只是比polygon多一个参数叫“multiple”——我们可以叫它“倍数”。如果倍数是1就画出来5边形,如果倍数是2,那就画出来了“五角星”!你将下面的第12行代码的2改成1试验下(画出五边形);再改成2试验下(画出五角星)想一想为什么呢?

比如我调用star函数时multiple参数赋值为1.8呢?一个小数,会发生什么呢?它会画出下面这个图形。其实你还可以试着改成其他的小数试试,看看还会出现什么奇怪的图形呢!

用star(200,5,1.8)调用函数

螺旋美图

还有更神奇的图案,只要我们稍稍改动下以上代码。比如像下面的代码那样。你要自己敲进电脑试验下,并和上面的代码比较下有什么区别呢?是不是又多了一个参数d呢?这次不用for循环而是用了while循环了。

画螺旋代码

运行一下得到下面结果:

如果我把上述代码第12行的调用参数改成spiral(200,8,3.1,1)——第三个参数由原来的3改为3.1呢?会出现什么结果呢?结果见下面(吼吼):

spiral(200,8,3.1,1)运行结果

如果我再把上述代码第12行的调用参数改成spiral(200,8,3.7,1)——第三个参数由原来的3改为3.7呢?会出现什么结果呢?见下图

spiral(200,8,3.7,1)运行结果

再改一下,调用spiral(200,9,3.01,3)后会出现如下的图形了——三角螺旋形,我自己定义的名字。

spiral(200,9,3.01,3)运行结果

当然,你只要一直改变函数的那几个参数,就会出现更多的神奇的螺旋形状。try it more! 多试试吧,就会有收获。

我们看出来:正n多边形的外角是360/n,当我再乘以一个倍数multiple,然后让每边的长度逐渐缩短的时候它就会形成不同的螺旋图案了。借助turtle画图我们就能欣赏到这些神奇的螺旋形了。多多探索哦!

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20190220G03K7H00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券