使用MATLAB实现随机分形树模拟

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

1使用MATLAB实现随机分形树模拟尤鸿霞(南通纺织职业技术学院,南通,226007)摘要:阐述了植物模拟的典型方法L-系统及迭代函数系统(IFS)的基本原理。根据这两种方法,利用Matlab软件工具,模拟了带有随机因子的分形树,模拟的分形树形态生动逼真。Matlab具有强大的绘图工具和函数系统,实现随即分形树模拟的程序很简洁。关键字:分形树;L-系统;迭代函数系统IFS;matlab中图分类号:TP391.9文献标识码:A1介绍自然界中种类繁多的植物大都具有自我相似的分形特征。近年来,随着分形理论的发展,分形理论在植物模拟领域得到了广泛的应用。基于分形理论的植物模拟方法主要有L-系统、迭代函数系统、粒子系统等[1]。本文以L系统、迭代函数系统(IFS)的算法思想为基础,以Matlab为编程工具,借助Matlab的绘图功能,实现了随机分形树的模拟。2分形模拟的实现2.1基于L系统的仿真1968年,著名理论生物学家Lindenmayer,在研究植物形态的进化和构造时,提出了一种文法描述方法作为植物生长的数学理论,即L系统,它能很好地表达植物的分枝特征。之后,各地的研究人员开始关注L-系统,并对其做了各种改进。至今,L-系统仍然是植物模拟的一种重要思想方法。L-系统是一种符号重写系统,基本思想为字符串替换,其替换规则基本如下:b→a,a→ab。则其基本演变规律为:b→a→ab→aba→abaab→abaababa→abaababaabaab→……。字符串的增长符合fibonacci数列,即F(n+2)=F(n+1)+F(n)。L-系统应用于植物模拟时,首先根据其符号元和替换规则产生一系列字符串,然后读取字符,按照不同字符表示的意义来执行不同的动作[2]。简单描述如下:第一步:生成字符串1)声明并设置产生式规则2)声明并设置起始点、初始角、迭代步长以及迭代上限等控制参数3)循环用替换字符串替换种子第二步:读取字符并画图4)逐个读取字符串中的每个字符5)根据读取到的字符采取不同的动作读取’F’时,画线段;读取’+’时,逆时针旋转读取’-’时,顺时针旋转读取’[’时,进栈,记录当前状态读取’]’时,出栈图1为笔者用matlab为平台实现的基于L-系统思想的分形树,其产生式规则分别为FF[-F+F+F]+[+F-F-F]、F[+F]F[-F]F、F[+F]F[-F[+F]]。2图1不同生成规则的分形树随着植物模拟技术的发展,一些研究者提出在分形树的基础上加入随机因子,这样的生成树就不是完全按照某一确定的规则,体现了自然界由于外界条件造成的树木生长的偶然性,这样得到的分形树更自然,更逼真。丁永胜等人[3]曾以matlab实现分形树模拟,其分形树是使用单一规则实现的,整棵树采用同一种自相似规则,每一个分枝的分形方法都相同,其生成树的结果如图1。笔者在其基础上,对程序进行了改进,加入了随机因子,整棵树的生成采用三种自相似规则(如程序中的p1、p2和p3),在树木分枝的部位,到底采用哪一种规则生成新的枝干部分,由随机数决定。如functionSltree(n)程序中,使用c=rand(1)函数随机生成一个0~1之间的数字,在分枝部位,如果生成的随机数是0.7~1之间,则采用p1='FF+[+F+F]-[+F]'规则生成新的枝干;若生成的随机数是0.35~0.7,则采用p2='F[+F]F[-F[+F]]'规则生成新的枝干;若生成的随机数是0~0.35,则采用p3='FF-[-F+F+F]+[+F-F-F]'规则生成新的枝干。这样生成的树木体现了自然界的外界条件对树木生长的影响,使树木的外观看起来更加逼真。程序如下:functionSltree(n)S='F';a=pi/10;A=pi/2;z=0;zA=[0,pi/2];p3='FF-[-F+F+F]+[+F-F-F]';p1='FF+[+F+F]-[+F]';p2='F[+F]F[-F[+F]]';fork=2:nc=rand(1)ifc=0.7S=strrep(S,'F',p1);elseifc=0.35S=strrep(S,'F',p2);elseS=strrep(S,'F',p3);endendfigure;holdon;fork=1:length(S);switchS(k);case'F'plot([z,z+2*exp(i*A)],'linewidth',2);z=z+2*exp(i*A);case'+'A=A+a;case'-'A=A-a;case'['zA=[zA;[z,A]];case']'z=zA(end,1);A=zA(end,2);zA(end,:)=[];otherwiseendend加入了随机因子之后,生成的分形树更具随机性,更逼真。由于具有随机性,每次执行程序,图2随机分形树仿真图3所生成的分形树是具有不同形态的。实验中,还可以根据需求调整生成规则,增加生成规则的数量,调整随机数的范围等,以得到不同的树。2.2基于迭代函数系统的仿真迭代函数系统(IFS)是分形理论的重要分支,将待生成图像由许多整体自相似的小块拼接而成,局部是整体的一个小复制品。主要技术有相似变换及仿射变换。相似变换可放大缩小甚至旋转,但不变形;仿射变换指在不同方向上变化比率不同的比例变换,一般会改变图形中向量的夹角、点与点之间的距离、图形的面积等,可以将图形进行缩放、伸长、剪切、扭曲等。仿射变换的数学表达式为如下,其中a,b,c,d,e,f均为实数:fdycxyebyaxx''利用IFS方法生成分形图的关键是找出相应的IFS码,根据已有的研究结果,给出如下一组IFS码[4]。本文作者利用matlab工具及这些IFS码,实现了IFS树的模拟。表1一组IFS树的IFS码iabcdef1-0.040-0.19-0.47-0.120.320.65000.560.061.5630.410.46-0.390.610.460.440.52-0.350.250.74-0.480.38笔者在丁永胜等人[3]的研究结果的基础上,采用不同与丁永胜等人的变换公式,如IFST(N)函数中的变换公式xp=a1*x+b1*y+e1,yp=c1*x+d1*y+f1,根据表1的IFS树的IFS码,并重新调整了随机数的分布,实现生成IFS树,如图3。程序如下:function[xx,yy]=IFST(N)x=0;y=0;p=rand(1,N);AA=[-0.04,0,-0.19,-0.47,-0.12,0.3;0.65,0,0,0.56,0.06,1.56;0.41,0.46,-0.39,0.61,0.46,0.4;0.52,-0.35,0.25,0.74,-0.48,0.38]xx=zeros(N,1);yy=zeros(N,1);forss=1:N;ifp(1,ss)=0.25;[x,y]=IFS(x,y,AA(1,1),AA(1,2),AA(1,3),AA(1,4),AA(1,5),AA(1,6));elseifp(1,ss)=0.5;[x,y]=IFS(x,y,AA(2,1),AA(2,2),AA(2,3),AA(2,4),AA(2,5),AA(2,6));elseifp(1,ss)=0.75;[x,y]=IFS(x,y,AA(3,1),AA(3,2),AA(3,3),AA(3,4),AA(3,5),AA(3,6));else[x,y]=IFS(x,y,AA(4,1),AA(4,2),AA(4,3),AA(4,4),AA(4,5),AA(4,6));endxx(ss)=x;yy(ss)=y;endplot(xx,yy,'.b','markersize',2);set(gcf,'color','w')axissquareoff;function[xp,yp]=IFS(x,y,a1,b1,c1,d1,e1,f1)xp=a1*x+b1*y+e1;yp=c1*x+d1*y+f1;return4图3为用matlab程序实现的以表1中的IFS码生成的IFS分形树,调整IFS码为适当的数值,还可以形象地模拟蕨叶、枫叶、蒿草等各种自然界的植物。3结语虚拟植物技术已经成为当今计算机图形学应用领域的研究热点,本文结合最常用的模拟植物形态的两种方法L-系统和迭代函数系统IFS,以matlab软件为运行平台,实现了分型植物的形态模拟。Matlab软件有功能强大的绘图工具箱,实现植物模拟的程序代码简洁,今后可多尝试使用matlab实现更加复杂的虚拟植物技术。参考文献:[1]康军广.基于分形理论的植物模拟[J].河北工业大学硕士学位论文.2006年12月:摘要[2]武志峰.基于分形理论的植物模拟方法研究[J].大连理工大学硕士学位论文.2005年16月:6—8[3]丁永胜,堵秀凤,张水胜.Matlab分形植物模拟[J].齐齐哈尔大学学报.2008.5(第24卷第3期):63—66[4]刘茗.分形植物形态的模拟算法研究[J].苏州大学同等学历硕士学位论文.2006年10月:27—29MatlabappliedinsimulatingrandomfractalnaturaltreesYouhong-xia(NantongTextileVocationalTechnologyCollege,Nandtong226007,China)Abstract:Lsystemanditeratedfunctionsystem,twotypicalmethodsonsimulatingplantsweredescribedinthispaper.Accordingtothesetwomethods,randomfractaltreesweresimulatedwithmatlabfunctionsandprograms.Therandomfractaltrees’configurationswerenaturalandliving.Inmatlabsoftware,functionsandtoolsfordrawingwerepowerful.Inthispaper,theprogramstosimulaterandomfractaltreeswerecompactandeasytoimplement.Keywords:fractaltree,Lsystem,iteratedfunctionsystem,matlab作者介绍:尤鸿霞:女,(1980-),黑龙江伊春人,南通纺织职业技术学院信息系教师。2006年毕业于无锡江南大学信息工程学院,获计算机应用技术硕士学位。主要研究方向:模式识别,计算机图形学作者联系方式:手机:139062713655办公室电话:0513-85228109电子邮件:youhx@126.com

1 / 5
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功