信息中心 发表于 2020-6-28 16:40:14

Scratch如何画圣诞树

简介圣诞节要来了,用Scratch画一棵圣诞树吧!这篇文章介绍使用分形技术绘制一棵圣诞树的方法。分形图是一种具有自相似特性的图案,它的每一部分都是整体缩小后的形状。分形图展示了数学之美,颇有老子“道生一,一生二,二生三,三生万物”圣诞节要来了,用Scratch画一棵圣诞树吧!这篇文章介绍使用分形技术绘制一棵圣诞树的方法。
分形图是一种具有自相似特性的图案,它的每一部分都是整体缩小后的形状。分形图展示了数学之美,颇有老子“道生一,一生二,二生三,三生万物”的哲学意味。分形图使用简单的基本图案构成,通常利用递归技术编程实现。
Scratch是面向青少年的图形化编程语言,与Python语言等高级语言相比,虽然只是个玩具,但是Scratch的递归是作了专门优化、简化,反倒使得递归调用的效率大大提高了,特别适合用来绘制分形图。
下面小海豚科学馆将介绍在Scratch中使用递归技术绘制圣诞树分形图,并在其基础上演化出几种其他类型的分形树。


圣诞树效果




感觉第一个效果还不错,其他几个像是自己没有整理好树的外型。。。
你也来画画看吧!


画圣诞树程序

提示:没有分形绘制基础的朋友可以阅读《Scratch趣味编程进阶》一书的第7章《神奇分形图》,其中介绍了几种常见的分形图的构造方法。
下面对画圣诞树的程序脚本进行简单讲解。
第一步:画树干
树干从最初的30个单位开始,每次以0.9的比率缩减。画笔大小设定为每段树干长度的0.2。

树干是可以旋转的,这里设置为0,画出的笔直的树干。如果设置为一个旋转角度,自然就能得到弯曲的树干。

第二步:画左侧的树枝
在上面的"旋转"模块中,使用“右转…度”指令设置画笔角度,所以这里设置负值,可在树干左侧画出树枝。设置-120度,每次以0.55的缩减比率画出左侧的树枝。

这里为了演示,将递归结束条件设置为“长度<5”,可以看到树枝的脉络。小海豚科学馆提示,实际的效果是树枝会不断的变短变小,并在小于某个阈值时把将画笔颜色设为绿色,就能画出树叶效果。变化过程如下图所示。

第三步:画右侧的树枝
同理,设置旋转角度为120度,画出右侧的树枝。为了增加变化,让右侧的树枝与左侧的树枝错开一下,避免左右对称。这里以每段树枝长度的0.2作为偏移量。

第四步:画礼物
使用画笔大小设置为5,在树枝末梢随机画出彩色的圆点,给圣诞树挂上许多礼物。

这样利用分形技术绘制出了一棵圣诞树。为了让树枝有一些变化,在设置旋转角度时,设置为从100到120之间随机选一个数作为角度。

可以自行调整这个角度,让树枝以不同的角度画出,或向下,右向上,最终使整棵树具有不同的外观。小海豚科学馆提示您,这就像是一棵刚买回来的“圣诞树”,慢慢调整各个树枝的角度,把树冠调整到合适状态。当然,你可以随心所欲地调整,只要你喜欢就好。



挑战一下

这两个模块的脚本,自己实现吧,就是设置画树时的画笔大小、颜色,以及画礼物的画笔大小和颜色。



页: [1]
查看完整版本: Scratch如何画圣诞树