Scratch画分形图形系列86:由科赫曲线孳生的有趣分形

一、问题的提出

科赫(Koch)曲线在分形几何中是赫赫有名的存在,我们也在Scratch画分形几何图系列条文中给出过若干范例。本文再次以科赫曲线为基础,画出由它演变出的有趣分形图。

二、画一个三脚架构成的填满平面的正六边形组合,这是在《CHAOS AND FRACTALS》一书中介绍科赫曲线那一段给出的一个分形。

(一)根据0级到2级分形图可见,0级最初元是一根线段,1级是将一根线段变成一个等长等夹角的“三脚架”,2级是1级三脚架的每一条边又变成了一个新的三脚架……这里要注意上一级线段的方向,如下图中的白色虚线箭头所示。

设θ=30度,上一级的线段长度A与下一级的三脚架的边长a之间的关系是acosθ=A/2,所以a/A=1/2cosθ。

(二)编程实现,和画其它分形类似,用L系统递归给出。

1.先定义堆栈(保存恢复位置)的子程序:

2.定义画线段并退回原位的子程序,以及抬笔移动的子程序:

3.由前面的分析得出L系统规则:

V(字母表):F,f,+,-,[,]

ω(公理):F

P(规则):规则1:F → [+F+f-----F+f-----F]

δ(角度增量):30°

4.对应规则有F的递归子程序:

5.主程序和4级分形图:

(三)看看其它几级分形图,是不是很酷炫?

三、画一个像花篮一样的分形。

(一)迭代关系分析:0级图表示它的最初元是一根线段;1级是由4根初级元组成的W形折线,第一第二根以及第三第四根的夹角都是90度,第二第三根的夹角是30度;2级由1级的每一根线段又变成新一级的W形折线……

(二)编程实现

1.只要算出两级之间的线段长度比,就可以像画科赫曲线那样画出这个分形。

2.“花篮”的L系统规则:

V(字母表):F, +,-。

ω(公理):F

P(规则):规则1:F → -F++++++F----------F++++++F-

δ(角度增量):15°

3对应规则F的递归子程序:

4.画图主程序:

5.几级分形图:

6.像画科赫雪花那样,对主程序初始数据做些改动,将分形图旋转拼接,形成花环,而且分级动画呈现怎么样?

效果截图:

四、由反雪花组成的枯树图

反雪花分形是由科赫雪花的转角取反以后形成的,如果把角度大小做些变动,比如由60度变成接近90度怎么样?

如果我们把这样的反科赫曲线,通过旋转90度4次组合起来怎么样?

【拓展】你能做出根据θ角不断变化的反雪花组合的动图么?

高档系统门窗

铝合金门窗品牌

高档断桥铝合金门窗