使用MATLAB实现随机分形树模拟_第1页
使用MATLAB实现随机分形树模拟_第2页
使用MATLAB实现随机分形树模拟_第3页
使用MATLAB实现随机分形树模拟_第4页
使用MATLAB实现随机分形树模拟_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、使用MATLAB实现随机分形树模拟尤鸿霞(南通纺织职业技术学院,南通,)摘要:阐述了植物模拟的典型方法L-系统及迭代函数系统(IFS)的基本原理。根据这两种方法,利用Matlab软件工具,模拟了带有随机因子的分形树,模拟的分形树形态生动逼真。Matlab具有强大的绘图工具和函数系统,实现随即分形树模拟的程序很简洁。关键字:分形树; L-系统; 迭代函数系统 IFS; matlab中图分类号:TP391.9 文献标识码:A1 介绍自然界中种类繁多的植物大都具有自我相似的分形特征。近年来,随着分形理论的发展,分形理论在植物模拟领域得到了广泛的应用。基于分形理论的植物模拟方法主要有L-系统、迭代函数

2、系统、粒子系统等1。本文以L系统、迭代函数系统(IFS)的算法思想为基础,以Matlab为编程工具,借助Matlab的绘图功能,实现了随机分形树的模拟。2分形模拟的实现2.1 基于L系统的仿真1968年,著名理论生物学家Lindenmayer,在研究植物形态的进化和构造时,提出了一种文法描述方法作为植物生长的数学理论,即L系统,它能很好地表达植物的分枝特征。之后,各地的研究人员开始关注L-系统,并对其做了各种改进。至今,L-系统仍然是植物模拟的一种重要思想方法。L-系统是一种符号重写系统,基本思想为字符串替换,其替换规则基本如下:ba,aab。则其基本演变规律为:baababaabaababa

3、ababaabaababaabaab。字符串的增长符合fibonacci数列,即F(n+2)=F(n+1)+F(n)。L-系统应用于植物模拟时,首先根据其符号元和替换规则产生一系列字符串,然后读取字符,按照不同字符表示的意义来执行不同的动作2。简单描述如下:第一步:生成字符串1) 声明并设置产生式规则2) 声明并设置起始点、初始角、迭代步长以及迭代上限等控制参数3) 循环用替换字符串替换种子第二步:读取字符并画图4) 逐个读取字符串中的每个字符5) 根据读取到的字符采取不同的动作读取F时,画线段;读取+时,逆时针旋转读取-时,顺时针旋转读取时,进栈,记录当前状态读取时,出栈图1为笔者用matl

4、ab为平台实现的基于L-系统思想的分形树,其产生式规则分别为FF-F+F+F+F-F-F、F+FF-FF、 F+FF-F+F。 图1 不同生成规则的分形树随着植物模拟技术的发展,一些研究者提出在分形树的基础上加入随机因子,这样的生成树就不是完全按照某一确定的规则,体现了自然界由于外界条件造成的树木生长的偶然性,这样得到的分形树更自然,更逼真。丁永胜等人3曾以matlab实现分形树模拟,其分形树是使用单一规则实现的,整棵树采用同一种自相似规则,每一个分枝的分形方法都相同,其生成树的结果如图1。笔者在其基础上,对程序进行了改进,加入了随机因子,整棵树的生成采用三种自相似规则(如程序中的p1、p2和

5、p3),在树木分枝的部位,到底采用哪一种规则生成新的枝干部分,由随机数决定。如function Sltree(n)程序中,使用c=rand(1)函数随机生成一个01之间的数字,在分枝部位,如果生成的随机数是0.71之间,则采用p1=FF+F+F-+F规则生成新的枝干;若生成的随机数是0.350.7,则采用p2=F+FF-F+F规则生成新的枝干;若生成的随机数是00.35,则采用p3=FF-F+F+F+F-F-F规则生成新的枝干。这样生成的树木体现了自然界的外界条件对树木生长的影响,使树木的外观看起来更加逼真。程序如下:function Sltree(n)S=F;a=pi/10;A=pi/2;z

6、=0;zA=0,pi/2;p3=FF-F+F+F+F-F-F;p1=FF+F+F-+F;p2=F+FF-F+F;图2 随机分形树仿真图for k=2:n c=rand(1) if c=0.7 S=strrep(S,F,p1); elseif c=0.35 S=strrep(S,F,p2); else S=strrep(S,F,p3); endendfigure;hold on;for k=1:length(S); switch S(k); case F plot(z,z+2*exp(i*A),linewidth,2); z=z+2*exp(i*A); case + A=A+a; case -

7、A=A-a; case zA=zA;z,A; case z=zA(end,1);A=zA(end,2); zA(end,:)=; otherwise endend 加入了随机因子之后,生成的分形树更具随机性,更逼真。由于具有随机性,每次执行程序,所生成的分形树是具有不同形态的。实验中,还可以根据需求调整生成规则,增加生成规则的数量,调整随机数的范围等,以得到不同的树。2.2 基于迭代函数系统的仿真迭代函数系统(IFS)是分形理论的重要分支,将待生成图像由许多整体自相似的小块拼接而成,局部是整体的一个小复制品。主要技术有相似变换及仿射变换。相似变换可放大缩小甚至旋转,但不变形;仿射变换指在不同方

8、向上变化比率不同的比例变换,一般会改变图形中向量的夹角、点与点之间的距离、图形的面积等,可以将图形进行缩放、伸长、剪切、扭曲等。仿射变换的数学表达式为如下,其中a,b,c,d,e,f 均为实数:利用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笔者在丁永

9、胜等人3的研究结果的基础上,采用不同与丁永胜等人的变换公式,如IFST(N)函数中的变换公式xp=a1*x+b1*y+e1, yp=c1*x+d1*y+f1,根据表1的IFS树的IFS码,并重新调整了随机数的分布,实现生成IFS树,如图3。程序如下:functionxx,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.38xx=zeros(N,1);yy

10、=zeros(N,1);for ss=1:N;if p(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);elseif p(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);elseif p(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);elsex,y=IFS(x,y,AA(4,1),AA(4,2),AA(4,3),A

11、A(4,4),AA(4,5),AA(4,6);endxx(ss)=x;yy(ss)=y;endplot(xx,yy,.b,markersize,2);set(gcf,color,w)axis square off;functionxp,yp=IFS(x,y,a1,b1,c1,d1,e1,f1)xp=a1*x+b1*y+e1;yp=c1*x+d1*y+f1;return图3为用matlab程序实现的以表1中的IFS码生成的IFS分形树,调整IFS码为适当的数值,还可以形象地模拟蕨叶、枫叶、蒿草等各种自然界的植物。3 结语虚拟植物技术已经成为当今计算机图形学应用领域的研究热点,本文结合最常用的模拟

12、植物形态的两种方法L-系统和迭代函数系统IFS,以matlab软件为运行平台,实现了分型植物的形态模拟。Matlab软件有功能强大的绘图工具箱,实现植物模拟的程序代码简洁,今后可多尝试使用matlab实现更加复杂的虚拟植物技术。参考文献:1 康军广. 基于分形理论的植物模拟J. 河北工业大学硕士学位论文. 2006年12月:摘要2 武志峰. 基于分形理论的植物模拟方法研究J. 大连理工大学硕士学位论文. 2005年16月:683 丁永胜,堵秀凤,张水胜. Matlab分形植物模拟J. 齐齐哈尔大学学报. 2008.5(第24卷第3期):63664 刘茗. 分形植物形态的模拟算法研究J. 苏州大

13、学同等学历硕士学位论文. 2006年10月:2729Matlab applied in simulating random fractal natural treesYou hong-xia ( Nantong Textile Vocational Technology College, Nandtong , China )Abstract: L system and iterated function system, two typical methods on simulating plants were described in this paper. According to these two methods, random fractal trees were simulated with matlab functions and programs. The random fractal trees configurations were natural and living. In matlab software, functions and tools for drawing were powerful. In this paper, the programs to simulate random fractal trees were compact and ea

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论