分享

用Scratch和Python画勾股树

 首家i55ryzehof 2018-10-12

勾股树,又称为毕达哥拉斯树。它是由古希腊数学家毕达哥拉斯根据勾股定理画出的一个可以无限重复的图形,因为重复多次以后的形状像一棵树,因此得名。这种图形也被称为分形图,它们中的一个部分和它的整体或者其它部分都十分相似,分形体内任何一个相对独立的部分,在一定程度上都是整体的再现和缩影。这就是分形图的自相似的特性。

我国古代把直角三角形称为勾股形,并且直角边中较小者为勾,另一长直角边为股,斜边为弦,所以把这个定理称为勾股定理。公元前六世纪,古希腊数学家毕达哥拉斯证明了勾股定理,因而西方人都习惯地称这个定理为毕达哥拉斯定理。

勾股定理的定义是,在平面上的一个直角三角形中,两个直角边边长的平方加起来等于斜边长的平方。用数学语言表达为

用图形来表达如下图所示

以勾股定理图为基础,让两个较小的正方形按勾股定理继续“生长”,又能画出新一代的勾股定理图,如此一直画下去,最终得到一棵完全由勾股定理图组成的树状图形,称之为勾股树,再恰当不过。

在《Scratch趣味编程进阶》一书的第7章7.5节“勾股树”中,介绍了使用Scratch绘制勾股树分形图的方法:

1. 先画出大正方形作为基本形状;

2. 再以大正方形的上边作为直角三角形的斜边,分别在三角形的两条直角边上画出两个小正方形;

3. 重复在每一个正方形的上边分别画出两个小正方形,最终得到一个树状的图形。

上图展示的是一棵勾股树的部分“生长”过程,最终图形如下图所示。

通过上面两个不同的勾股树分形图可以看到,它们的区别是最基础的勾股定理图中间的三角形,一个是普通的直角三角形,一个是等腰直角三角形。由此可知,通过改变勾股定理图中的直角三角形的两个锐角的大小,将能构造出不同形状的勾股树。

下面我们以前面所介绍的勾股定理图为基础,分别使用Scratch和Python来编写绘图程序,代码如下。

上面的Scratch程序使用到了递归方法来绘制勾股树分形图,对于递归编程不熟悉的朋友可以阅读《Scratch编程从入门到精通》一书,书中第5章“过程”中对函数(过程、自定义积木)和递归调用进行了详细的介绍。

上面的Python程序来自苏老师正在编写的一本Python图书《Python????》(书名待定),预计明年春天万事物生长之时出版发行,有兴趣的朋友可以留意一下。

剧透完毕,我们接着说勾股树。使用Scratch和Python绘制的勾股树分形图如下。

Python中内置了小海龟绘图库,提供了和Scratch类似的画笔功能,可以用来绘制平面图形。经过对比,Python小海龟的绘图速度远逊于Scratch,使用加速模式也没有Scratch的快,但是填充功能则是Scratch没有的。因此,用Python小海龟绘制的勾股树更漂亮一些。

勾股树、分形图等是非常有趣的话题,对此感兴趣的朋友可以阅读《Scratch趣味编程进阶》一书的第7章《神奇分形图》,其中介绍了几种常见的分形图的构造方法。会Python的朋友,可以尝试着将Scratch代码翻译为Python代码,感受一下使用Python的小海龟进行绘图的乐趣。

人工智能时代已经悄然来临,编程渐渐被推到时代浪潮之颠,似乎全世界都在推动编程教育的发展,全民编程运动已经兴起。编程是现代知识体系的重要组成部分,逐渐成为和写作、阅读等一样的基本技能。有一句大家都很熟悉的话——“计算机普及要从娃娃抓起”。编程也一样,从小学开始,就可以开展编程教育,培养学生的编程素养。

在众多的编程语言中,出自美国麻省理工学院的图形化编程语言Scratch成为对小学生进行编程入门教育的最佳选择。目前,在各大网店有着数量众多的Scratch编程图书可供选择。但是这也给对想要学习编程或者是对编程不熟悉的初学者和家长们造成了很大的困扰,图书琳琅满目却无从选择。在此,小海豚科学馆推荐由清华大学出版社出版的《Scratch编程从入门到精通》和《Scratch趣味编程进阶》,读者可以在当当、天猫、淘宝、京东等网店平台均可购买。

Scratch课程推荐

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多