Scratch画分形几何图形系列之38: IFS画植物分形(1)
上一篇简要介绍了IFS系统,并以谢尔宾斯基三角为例,给出了用IFS系统画分形几何图的基本方法。本次来用IFS系统画一个前面曾用递归画过的蕨类分形。
巴恩斯利在《超分形》一书中介绍了许多模拟自然界植物的分形。为了画出更复杂的分形,使用的变换除了上一篇介绍的线性变换外,还有非线性变换:

可为此构造这样的变换函数的自定义积木:

前面的线性仿射变换,可以视为g=h=0,j=1时的特例。
(一)巴恩斯利蕨类(经典)
IFS数据,本例的g=h=0,j=1:
| a | b | c | d | e | k | g | h | j | p | 
| 0.85 | 0.04 | 0.00 | -0.04 | 0.85 | 1.60 | 0.00 | 0.00 | 1 | 0.6 | 
| 0.00 | 0.00 | 0.00 | 0.16 | 0.00 | 0.00 | 0.00 | 0.00 | 1 | 0.01 | 
| 0.20 | -0.26 | 0.00 | 0.23 | 0.22 | 0.80 | 0.00 | 0.00 | 1 | 0.2 | 
| -0.15 | 0.28 | 0.00 | 0.26 | 0.24 | 0.40 | 0.00 | 0.00 | 1 | 0.19 | 
根据概率选择相应数据的程序:

画图主程序:

巴恩斯利蕨类分形图:

(二)非线性变换画出的植物分形:
函数框架同(一)
IFS数据:
| a | b | c | d | e | k | g | h | j | p | 
| 9.17 | -1.39 | -6.92 | -4.33 | -1.79 | 2.59 | 12.17 | -1.83 | -10.61 | 0.5 | 
| 5.66 | -2.22 | -1.15 | -0.88 | 4.84 | -1.45 | 3.23 | -1.71 | 4.14 | 0.5 | 
根据概率选定相应变换(游戏规则)的程序:

画图主程序:

分形图:




















