使用MATLAB 实现随机分形树模拟亿牌地板找陈晨15172411677_第1页
使用MATLAB 实现随机分形树模拟亿牌地板找陈晨15172411677_第2页
使用MATLAB 实现随机分形树模拟亿牌地板找陈晨15172411677_第3页
使用MATLAB 实现随机分形树模拟亿牌地板找陈晨15172411677_第4页
使用MATLAB 实现随机分形树模拟亿牌地板找陈晨15172411677_第5页
全文预览已结束

下载本文档

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

文档简介

学习资料 使用 MATLAB实现随机分形树模拟 尤鸿霞 (南通纺织职业技术学院,南通, 226007) 摘要: 阐述了植物模拟的典型方法 L-系统及迭代函数系统 (IFS)的基本原理。根据这两种方法,利用Matlab软件工具,模拟了带有随机因子的分形树,模拟的分形树形态生动逼真。 Matlab具有强大的绘图工具和函数系统,实现随即分形树模拟的程序很简洁。 关键字: 分形树; L-系统; 迭代函数系统 IFS; matlab 中图分类号: TP391.9 文献标识码: A 1 介绍 自然界中种类繁多的植物大都具 有自我相似的分形特征。近年来,随着分形理论的发展,分形理论在植物模拟领域得到了广泛的应用。基于分形理论的植物模拟方法主要有 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+FF-FF、 F+FF-F+F。 学习资料 图 1 不同生成规则的分形树 随着植物模拟技术的发展,一些研究者提出在分形树的基础上加入随机因子,这样的生成树就不是完全按照某一确定的规则,体现了自然界由于外界条件造成的树木生长的偶然性,这样得到的分形树更自然,更逼真。丁永胜等人 3曾以 matlab 实现分形树模拟,其分形树是使用单一规则实现的,整棵树采用同一种自相似规则,每一个分枝的分形方法都相同,其生成树的结果如图 1。笔者在其基础上,对程序进行了改进,加入了随机因子,整棵树的生成采用三种自相似规则(如程序中的 p1、 p2和 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=0;zA=0,pi/2; p3=FF-F+F+F+F-F-F;p1=FF+F+F-+F;p2=F+FF-F+F; 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); end end figure;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 - A=A-a; case zA=zA;z,A; case z=zA(end,1); A=zA(end,2); zA(end,:)=; otherwise end end 加入了随机因子之后,生成的分形树更具随机性,更逼真。由于具有随机性,每次执行程序, 图 2 随机分形树仿真图 学习资料 所生成的分形树是具有不同形态的。实验中,还可以根据需求调整生成规则,增加生成规则的数量,调整随机数的范围等,以得到不同的树。 2.2 基于迭代函数系统的仿真 迭代函数系统( IFS)是分形理论的重要分支,将待生成图像由许多整体自相似的小块拼接而成,局部是整体的一个小复制品。主要技术有相似变换及仿射变换。相似变换可放大缩小甚至旋转,但不变形;仿射变换指在不同方向上变化比率不同的比例变换,一般会改变图形中向量的夹角、点与点之间的距 离、图形的面积等,可以将图形进行缩放、伸长、剪切、扭曲等。 仿射变换的数学表达式为如下,其中 a, b, c, d, e, f 均为实数: fdycxyebyaxx 利用 IFS方法生成分形图的关键是找出相应的 IFS 码,根据已有的研究结果,给出如下一组 IFS码 4。本文作者利用 matlab工具及这些 IFS码,实现了 IFS树的模拟。 表 1 一组 IFS树的 IFS码 i a b c d e f 1 -0.04 0 -0.19 -0.47 -0.12 0.3 2 0.65 0 0 0.56 0.06 1.56 3 0.41 0.46 -0.39 0.61 0.46 0.4 4 0.52 -0.35 0.25 0.74 -0.48 0.38 笔者在丁永胜等人 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.38 xx=zeros(N,1);yy=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); else x,y=IFS(x,y,AA(4,1),AA(4,2),AA(4,3),AA(4,4),AA(4,5),AA(4,6); end xx(ss)=x;yy(ss)=y; end plot(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仿真的 IFS分形树 学习资料 图 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 29 Matlab applied in simulating random fractal natural trees You hong-xia ( Nantong Textile Vocational Technology College, Nandtong 226007, 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 easy to implement.

温馨提示

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

评论

0/150

提交评论