资源描述:
《fractal07.ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、第7章分形演化算法7.1从逻辑运算谈起7.2一维元胞自动机7.3二维元胞自动机7.4分形演化的DLA模型7.5用DLA模型模拟植物的生长7.6不同初始条件的DLA形态1参考书:《分形算法与程序设计》2参考书:《分形算法与程序设计》从逻辑运算谈起7.1逻辑异或本行:00011011下一行:01103参考书:《分形算法与程序设计》7.2一维元胞自动机元胞按等间隔方式分布在一条向两侧无限延伸的直线中,称为一维元胞自动机。本行:001100其他下一行:1104参考书:《分形算法与程序设计》7.2一维元胞自动机算法:cell_one标题:一维元胞自动机参数:
2、n(水平方向最大值)m(垂直方向最大值)变量:i,j(循环变量)y1[](本行元胞数组)y2[](下一行元胞数组)函数:SPost(x,y,color)(画点)BEGINFORi=1TOmFORj=1TOnIFy1[j-1]=0ANDy1[j]=0ANDy1[j+1]=1THENy2[j]=1ELSEIFy1[j-1]=1ANDy1[j]=0ANDy1[j+1]=0THENy2[j]=1ELSEy2[j]=0ENDIFIFy2[j]=1THENSPost(x,y,color)ENDIFENDFORENDFOREND5参考书:《分形算法与程序设计》7
3、.3二维元胞自动机在一个二维网格中,如果抛下一粒种子(元胞着色),然后考察一下种子身边的格子中的元胞状态会发生什么事情。给一个规则,即每一个格子的状态,由其周围的八个格子的状态(0或1)来决定,如果它周围八个格子中的状态值相加为奇数时,则此格子下一个状态为1;如果它周围八个格子中的状态值相加为偶数时,则此格子下一个状态为0。就这样一步一步演化下去,会看到图案。6参考书:《分形算法与程序设计》7.3二维元胞自动机算法:cell_two标题:二维元胞自动机参数:n(元胞的范围)变量:i,j(循环变量)a[][](本步元胞数组)b[][](下一步元胞数组
4、)函数:SPost(x,y,color)(画点)BEGINFORi=1TOnFORj=1TOnk=a[i-1][j-1]+a[i-1][j]+a[i-1][j+1]+a[i][j-1]+a[i][j+1]+a[i+1][j1]+a[i+1][j]+a[i+1][j+1]IFkmod2=1THENb[i][j]=1ELSEb[i][j]=0ENDIFENDFORENDFOREND7参考书:《分形算法与程序设计》7.4分形演化的DLA模型自然界中有很多种这样的生长集团8参考书:《分形算法与程序设计》7.4分形演化的DLA模型算法:DLA标题:DLA模型
5、参数:BAX,BAY(基点坐标)m(垂直方向最大值)变量:r0(凝聚半径)r(释放粒子的半径)rmax(粒子逃逸半径)cyt,cyb,cyl,cyr(游走粒子周围4点)函数:SPost(x,y,color)(画点)getpixel(x,y)(获取点)read()(随机函数)sgn()(符号函数)BEGINr0=5WHILE(n<1000)r=r0+5rmax=r0+5rx=(2*r+1)*read()-rrv=r-abs(rx)ry=rv*sgn(read()-0.5)x=rxy=ryFOR(;;)xb=xyb=ydist=abs(x)+abs(y
6、)cyt=getpixel(x+BAX,y+BAY+1)cyb=getpixel(x+BAX,y+BAY-1)cyl=getpixel(x+BAX-1,y+BAY)cyr=getpixel(x+BAX+1,y+BAY)9参考书:《分形算法与程序设计》7.4分形演化的DLA模型twd[1]=0twd[2]=0twd[(2*read())+1]=sgn(read()-0.5)x=x+twd[1]y=y+twd[2]SPost(x+BAX,y+BAY,white)SPost(x+BAX,y+BAY,red)ENDFORENDWHILEENDIFcyt!=
7、whiteORcyb!=whiteORcyr!=whiteORcyl!=whiteTHENSPost(x+BAX,y+BAY,0)n=n+1IFdist>r0THENr0=distbreakENDIFIFdist>rmaxTHENSPost(x+BAX,y+BAY,white)breakENDIF10参考书:《分形算法与程序设计》7.5用DLA模型模拟植物的生长如果初始不是一个原点,而是一条直线,且随机粒子从上面落到平面上,它将会产生一个什么样的图形呢?11参考书:《分形算法与程序设计》7.6不同初始条件的DLA形态12参考书:《分形算法与程序设计
8、》