L-System分形

L-System(Lindenmayer system)是一种生成分形图案的方法。与迭代函数系统生成分形依靠数字的迭代不同,L-System依赖的是字符的迭代。字符间也有迭代公式,可以将字符换成某个字符串,随着迭代次数的增加,字符串长度越来越大,而字符串中的每一个字符,都代表着一种对线条的操作,如延伸、旋转等。最后将字符串依次执行一遍,便会得到一张分形图案。

字符的含义:
F/f:向前走固定长度
+:正方向旋转固定角度
-:负方向旋转固定角度
[:将当前的位置存入堆栈
]:从堆栈中取出坐标,修改当前位置
S:出世迭代符号

比如,F+F--F+F这个字符串的结果是
图1
如果迭代规则是 F = F+F--F+F,第一次迭代的结果是
图2
图2的生成过程:相当于当向前走的时候(执行F的时候),不是向前画一条线段,而是向前画一个图1。

我们可以用一个字典来定义一个规则中的所有属性,比如迭代公式、初始符号、初始角度、角度增量等。
生成 6 个分形图案的代码如下,有详细的注释:

# L-System(Lindenmayer system)是一种用字符串替代产生分形图形的算法
from math import sin, cos, pi
from matplotlib import pyplot as pl
from matplotlib import collections

class L_System(object):
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值