APP下载

Scratch分形树

2021-11-04

电脑报 2021年41期
关键词:分形数据结构画笔

在计算机科学中数据结构是计算机存储、组织数据的基础方式。数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。通常情况下,精心选择的数据结构可以带来更高的运行或者存储效率。不同的数据结构可以通过不同的数学建模来搭建起来,今天就和大家分享一个最基础也是重要的数据结构图形:分形树。

什么是分形树呢?现实生活中植物的生长离不开生根、发芽、开花、结果,大树也同样如此,大树由下到上主要分为四个部分:粗壮的树根,树根的上面则是分出来的树干,树干上又生长出很多小的树枝,树枝上才有了树叶、花朵、果实等等。依照大树的生长模型我们可以设计出分形树的模样。分形树从树干开始一直分叉,依照2的N次方公式进行分叉,每次分叉的过程中树枝的长度都会有规律地减少,一直分叉到树的末梢;所形成的分形树为左右对称的图形,添加上对应的颜色后宛如一棵真正的参天大树。

了解了分形树的介绍和图形后,不知道你有没有想到通过Scratch画笔绘制出分形树的思路呢?看到这里大家可以先暂停一下想一想你自己的思路与方法。下面请跟随小陈老师分析的过程:其实分形树的本质就是利用递归函数,首先确定初始的位置然后向上绘制树干,树干绘制完后,需要进行左右的分叉绘制树枝,当然在绘制过程中画笔不可能左右同时进行绘制,必须先绘制完一侧的树枝后,退回分叉点,回到原方向,再朝着另一侧绘制。

这里为了方便理解,我用Scratch画笔绘制出一个简单的分形树Y供大家参考,在舞台区域用数字编号表示了绘制的过程,如果我们想绘制多个分支结构的时候,就需要使用递归的思想了。

递归,指一种通过重复将问题分解为同类的子问题而解决问题的方法。

在分形树中,我们需要新建一个自制积木来控制绘制树丫分叉过程和绘制树枝的长度。默认情况下我们将起始的树枝长度设置为50,因为在旋转移动的过程中,树枝的长度是随着分叉的过程不断地减少。因此在自定义积木中便可以添加递归的过程,为了防止分形树一直重复无止尽递归,需要添加控制的条件,当树枝的长度小于10的时候停止递归,若满足条件则将树枝的长度减少10后绘制新的分叉。在减少树枝长度的同时还可以通过修改颜色深度给分叉增加不一样的特效。

除了递归的过程需要注意以外,我们还需注意画笔旋转的角度与方向,什么时候需要向左旋转,什么时候需要向右旋转,以及旋转的角度的控制都有着严格的把控(旋轉角度和树枝的长度并没有一个固定的参数,大家可以根据最终效果进行调整)。

利用Scratch的画笔工具我们学习绘制出了基本的分形树,当然有能力的同学还可以通过Python的Trutle库结合递归的思想绘制出更多有创意的分形树图形,快去动手挑战一下自己吧。

猜你喜欢

分形数据结构画笔
小画笔 大世界
数据结构线上线下混合教学模式探讨
重典型应用,明结构关系
像科幻电影般变幻莫测
分形
小画笔 大世界
小画笔
绝美的分形艺术
分形的意蕴
小画笔