CAD命令行深入理解——python乱入CAD二_分形的绘制思路

通过绘制柯西雪花,有了一个用程序表达分形的思路:

迭代法实现L语法:

研究主要内容之一:恰当理解分形学与L-system的关系。从万事万物的自相似性中提取的理念并将其实现,L-system可无限嵌套,具有高度简洁性和多级结构,为描述植物树木生长和增殖过程的形态和结构特征,提供了行之有效的理论和方法,已经成为植物可视化建模的主流方法。L-system又称为字符串替换法,这种方法的理论根据:一是利用分形可以由简单的图(生成元)迭代产生这一基本原理,因此可以用字符串表示生成元的构成(如组成的线段数,转动的角度等),再把字符串迭代就能生成希望得到的分形图;二是由于生物体是并行方式下生成的(所谓的并行方式,就是几个部分同时生长),因此并行性应是植物仿真与模拟过程的一个基本原则。 研究主要内容之二:合理利用L-system形式化语言仿真植物生长。其自然递归规则导致自相似性,也因此使得分形一类形式可以很容易的使用L-system描述。植物模型和自然界的有机结构生成,非常相似并很容易被定义,因此通过增加递归的层数,可以缓慢生长并逐渐变得更复杂。L-system 语法与Chomsky语法非常相似,说到L-system通常指的是带参数的L-system,定义如下:G={V,S,ω,P},V:变量符号集合;S:常量符号集合;ω:初始状态串;P:产生式规则自初始状态开始迭代套入L-system的文法规则,和正则文法语言不同之处在于L-system在一次迭代中可同时套用许多不同的文法规则。 研究主要内容之三:辅助功能的设计。对于一个植物仿真,L文法设计是核心,但是一个合格的植物仿真,还需要视图文件设计、动画参数设计、颜色设计、外形设计、生长函数设计等功能加以辅助。例如在生长函数设计中,对于一个植物从无到有、从小到大,从花芽到花朵,从嫩叶到枯黄的老叶,都与生长两个字密切相关,我们需要对植物的整个生长区间做必要的规划。而这一切都和生长函数密不可分。 通过逐步对L文法的认识,达到建立基于L-system的植物模拟仿真的要求,实现对植物生长整体情况或局部因素的初步仿真。

  1. 初始状态,最原始的状态,迭代之初;
  2. 动作细胞函数:
    输入一个状态,返回一个新状态,这是动作细胞单元;
  3. 组合细胞函数:
    组合动作细胞函数,即:
    输入一个状态列表,返回一个新状态列表,然后按需要进行降维列表操作,直到符合动作细胞函数的输入条件,这一步还有待商榷;
  4. 迭代组合细胞函数,用组合细胞函数动作对上一代迭代结果进行操作,返回这一代的结果。

    import math
    import numpy as np
    z0 = 0
    z1 = 20j
    def atction(ZS):
    z1 = ZS[0]
    z4 = ZS[1]
    z2 = (z4-z1)/3
    z3 = (z4-z1)2/3
    z5 = z2 + z2
    (math.cos(math.pi/6)+math.sin(math.pi/6)1j)
    z6 = z3 + z2
    (math.cos(-math.pi/6)+math.sin(-math.pi/6)*1j)
    return z1,z2,z3,z4,z5,z6
    def conbinetree(trees):
    trees = list(trees)
    after = []
    for i in trees :
    if trees.index(i) <= len(trees)-2:
    after.extend(atction((i,trees[trees.index(i)+1])))
    return after
    def tree(n):
    if n == 0:
    return conbinetree((z0,z1))
    else :
    return conbinetree(tree(n-1))
    tree = tree(5)
    s = 'point \n'
    for i in tree:
    s += '%s,%s \n'%(i.real,i.imag)
    s += ' '
    f = open(r'C:\Users\Administrator\Desktop\1.txt','w')
    f.write(s)
    f.close()

返回37326个点

你可能感兴趣的:(CAD命令行深入理解——python乱入CAD二_分形的绘制思路)