预备知识
科赫雪花是瑞典数学家科赫提出的一种曲线,这种曲线形如雪花,又称为雪花曲线。它的生成方法是:
取一个等边三角形,对每条边做以下操作 – 第一步:将每一条边分成三等分(这里只显示一条边,是一条线段)
- 第二步:以三等分中间那一份为底做等边三角形,画好之后把中间那一份“挖掉”。
- 第三步:对上一步的结果再重复第一至第二步:
- 第四步:如果再重复一次:
以上每一步都可以称为某一级别的“科赫曲线”,例如第一步中的线段是第一级,最后是第四级,你还可以继续重复得到级数更高的科赫曲线,不过也更复杂。
把三条这样的曲线拼成三角形(沿着箭头方向看,是不是等边三角形?),就是科赫雪花了:
不同级别的曲线组成的科赫雪花是这样的:
我们很快就可以自己画出来了。
问题
使用Scratch画笔绘制科赫雪花,要求能够调整级别,实时绘制。
分析
我们知道科赫曲线是一种分形,所以肯定可以用递归来生成。只是得找到这种规律。
一、先来看一级的科赫曲线,它是一条线段,我们用一条指令就可以画出来:
二、如果要画二级曲线呢?我们就要分解成四段来画了,移动三分之一距离 -> 左转60度 -> 移动三分之一距离 -> 右转120度 -> 移动三分之一距离 -> 左转60度 -> 移动三分之一距离:
三、如果再画多级怎么办?我们不可能一直这么写下去。我们只能通过调用自己的方式,把每次移动三分之一的操作变成调用自己,所以我们需要建立一个自制积木,这个自制积木接收“级数”和“大小”两个参数,当级数=1时直接画出线段,否则会在原来每一次移动三分之一的步骤换成对自己的调用:
有了画单条曲线的自制积木,画雪花不就轻而易举了吗?
编程
把前面介绍的自制积木用上,用程序调用三次科赫曲线的自制积木,每调用一次右转120度,这样会组成雪花形状。
为了让雪花的级数能够实时变化,我们设置了变量n,初始化为3,并把它以滑杆的形式显示在舞台区域,让程序以n这个变量为级别不断重新绘制雪花。这样,当你拖动滑杆,让变量n变化时,雪花也会随即更新成相应级数的外观:
需要注意的是,要把自制积木设置为“运行时不刷新屏幕”。另外n的取值不要太大,我的电脑上,如果把n设置成8以上,就有点卡了。你可以测试一下你的电脑性能。
总结
基本的科赫雪花我们已经画出来了,怎样把它变成彩色的呢?请你在自己的电脑上试验一下。