基因与生成元算法

基因与生成元算法一生二,二生三生成元算法生成元.py源码数据可视化Tips配色方案本章绘图要点:生成元算法:重复性的绘图步骤可抽象提炼成数据,保存在列表或元组里,然后,依据抽象规则,读取数据,调用绘图函数,生成所需要的图形,从而降低程序的复杂性,减少程序的代码量。绘图效率:当图形的数据计算量比较大时,可先统一计算,然后再绘图,从而提高图形的生成效率。一生二,二生三“道生一,一生二,二生三,三生万物。”–《道德经》生命究竟是什么?生命最初又是如何形成的?基因存在于染色体上,负责对生命体的形
摘要由CSDN通过智能技术生成


本章绘图要点:

  • 生成元算法:重复性的绘图步骤可抽象提炼成数据,保存在列表或元组里,然后,依据抽象规则,读取数据,调用绘图函数,生成所需要的图形,从而降低程序的复杂性,减少程序的代码量。
  • 绘图效率:当图形的数据计算量比较大时,可先统一计算,然后再绘图,从而提高图形的生成效率。

一生二,二生三

“道生一,一生二,二生三,三生万物。”
–《道德经》

生命究竟是什么?生命最初又是如何形成的?
基因存在于染色体上,负责对生命体的形态、结构、功能进行全方位的编码,它所包含的信息必定有限,然而如此有限的信息又是如何准确地描述后代生命的性状呢?
经典理论无法解释自然界这些让人困惑的问题,直到分形理论的出现,才让这些问题有了一个可能的答案。简单而少量的规则是可以生成复杂结构的,自然界中的许多事物可以通过简单步骤的无数次重复(也就是分形迭代)演化而成。
由一个简单的生成因子(分形理论中称之为“生成元”),不断迭代,自我进化,越来越复杂,以至于逐步出现山川、草木、动物、人类及人类的思维。宇宙间的一切难道都是这样动态生成的吗?听起来不可思议,但或许这就是事实!

生成元

我们可以在计算机上做个小实验,用『原形+生成元+迭代』的方式,来生成一些复杂的图形。上一章的科赫曲线的原形是一条直线,生成元如图所示:
科赫曲线生成元
如果保持原形为一条直线,改变生成元,那么多次迭代后,会生成一个怎么样的图形呢?
生成元1:
在这里插入图片描述
第一次迭代同生成元;
第二次迭代:
在这里插入图片描述
第三次迭代:
在这里插入图片描述
第六次迭代:
在这里插入图片描述
生成元2生成元
在这里插入图片描述
第一次迭代同生成元;
第二次迭代:
在这里插入图片描述
第三次迭代:
在这里插入图片描述
第四次迭代:
在这里插入图片描述
你可以尝试设计不同的生成元,多次迭代后,看看会生成怎样复杂的图形。为了更清晰地显示图形的细微结构,示例程序画笔的颜色选择的是默认的黑色,你也可以选择自己喜欢的单种或多种颜色,来生成更绚烂的图形。

算法

我们可以用一个列表genu来指定生成元,例如科赫曲线的生成元可用列表
gene = [0,60,-120,60,’END’]来表示,如图所示:

在这里插入图片描述
列表的每个值表示了旋转角的大小,正数是逆时针旋转,负数是顺时针旋转。A点不旋转,为0;C点逆时针旋转60度,为60;D点顺时针旋转120,为-120;E点逆时针旋转60,为60;END表示终止指定生成元(实际上它可以是任意值)。从一次旋转到下次旋转之间的距离是一定的,也就是说,AC、CD、DE、EB的长度是相同的,都为AB的1/3。
除了生成元以外,我们还需要一个缩小率ratio:下一次迭代的线段和原始线段的比率,也就是AC/AB,科赫曲线的这个比率我们知道就是1/3,约为0.3333。
生成元1 的生成元可用列表[-15,90,-150,90,’END’]来表示,如图所示:
在这里插入图片描述
列表的每个值表示了旋转角的大小,正数是逆时针旋转,负数是顺时针旋转。A点顺时针旋转15,为-15;C点逆时针旋转90度,为90;D点顺时针旋转150,为-150;E点逆时针旋转90,为90;END表示终止指定生成元。 AC、CD、DE、EB的长度是相同的。
生成元1 的缩小率ratio(下一次迭代的线段和原始线段的比率),也就是AC/AB,这个比率我们通过计算可知:
ratio = ≈ 0.4082
生成元2 的生成元可用列表[0,90,-90,-90,90,-90,90,90,-90,’END’]来表示,如图所示:
在这里插入图片描述
列表的每个值表示了旋转角的大小,正数是逆时针旋转,负数是顺时针旋转。生成元2 的缩小率为:
ratio = 1/5 = 0.2
几种曲线的生成元和缩小率如表所示:

<
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值