苹果树分为大树干、大树枝、小树干、小树枝,这些树干和树枝有自相似性,可以用L系统(Lindenmayer系统)来表达。
L系统,是荷兰生物学家Aristid Lindenmayer(林登麦伊尔),于1968年提出的细胞交互作用的数学模型,它广泛应用在模拟生物生长的研究和实验。
下面介绍,在Scratch里使用L系统来实现苹果树的生长。
1、定义"随机树干长度"积木
图(1) 定义"随机树干长度"积木
图(2) "随机树干长度"积木代码
2、定义"随机分支角度"积木
图(3) 定义"随机分支角度"积木
图(4) "随机分支角度"积木代码
3、定义"苹果树"积木
图(5) 定义"苹果树"积木
图(6) "苹果树"积木代码
4、定义"还原"积木
图(7) 定义"还原"积木
图(8) "还原"积木代码
5、定义4个变量
- 分支角度
- 缩小比例
- 圆弧角度
- 枝干长度
图(9) 定义4个全局变量
6、定义2个广播
6.1 "分叉"广播
图(10) 处理"分叉"广播事件
// ### 6.2 "画树枝1"广播
图(11) 处理"画树枝1"广播事件
7、主函数
图(12) 主函数
效果如下:
图(13) L系统生成的苹果树A
图(14) L系统生成的苹果树B
图(15) L系统生成的苹果树C