如果昨天的递归分形算法画出的图案好象不那么有技术含量,那么今天的LS文法构图算法就很有档次了!CQ今天弄出了这个东西后也是非常激动啊!
好东西啊!要和大家分享!哈哈!
首先来介绍一下LS文法,这是在美国生物学家Axxx Lxxx (名字太长,不好记!不过感谢他的发明!哈哈!) 发明的一种文法描述方法: graftal上逐渐发展起来的形式语言的一个重要分支.后来人们称之为L-system.
讲了些没有实际作用的历史,现在就进入正题!
LS文法是一类独特的迭代过程,他的核心思想就是重写.作为一种形式话的语言,LS文法用字母表和符号串来表达生成对象的初始形式,称为公理.然后根据一组产生式重写规则,将初始的每个字符依次替换为新的字符形式,反复进行,直到最后生成图形.
在二维平面上,LS是这样工作的!
首先讲符号:
F: 以当前方向前进,画线
f: 以当前方向前进,不画线
+:逆时针旋转 alpha 度
-:顺时针旋转 alpha 度
[:当前信息压栈
]:将上一个[处存的信息出栈
我们来看koch曲线的LS文法生成(不知道koch曲线吗!网上找找资料吧!分形入门的时候本来要贴的,忘记了!哈哈!)
w: F (初始的形态: 一条直线段)
alpha 60 (变化的角度)
P: F-> F – F + + F – F (变化规则: 把一条直线段变成四个小直线段)
然后再进行LS文法生成:
Step 1 : F
Step 2 : F – F + + F – F
Step3 : F – F + + F – F –F – F + + F – F + + F – F + + F – F –F – F + + F – F
Setp4: …
就这样依次无限循环下去就得到了koch