收藏 分销(赏)

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

上传人:天**** 文档编号:2776809 上传时间:2024-06-05 格式:DOC 页数:5 大小:95.04KB
下载 相关 举报
使用MATLAB实现随机分形树模拟.doc_第1页
第1页 / 共5页
使用MATLAB实现随机分形树模拟.doc_第2页
第2页 / 共5页
点击查看更多>>
资源描述
(完整版)使用MATLAB实现随机分形树模拟 使用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[+F]F[—F]F、 F[+F]F[—F[+F]]。 图1 不同生成规则的分形树 随着植物模拟技术的发展,一些研究者提出在分形树的基础上加入随机因子,这样的生成树就不是完全按照某一确定的规则,体现了自然界由于外界条件造成的树木生长的偶然性,这样得到的分形树更自然,更逼真。丁永胜等人[3]曾以matlab实现分形树模拟,其分形树是使用单一规则实现的,整棵树采用同一种自相似规则,每一个分枝的分形方法都相同,其生成树的结果如图1.笔者在其基础上,对程序进行了改进,加入了随机因子,整棵树的生成采用三种自相似规则(如程序中的p1、p2和p3),在树木分枝的部位,到底采用哪一种规则生成新的枝干部分,由随机数决定。如function Sltree(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]'规则生成新的枝干。这样生成的树木体现了自然界的外界条件对树木生长的影响,使树木的外观看起来更加逼真。程序如下: 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[+F]F[—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); 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 基于迭代函数系统的仿真 迭代函数系统(IFS)是分形理论的重要分支,将待生成图像由许多整体自相似的小块拼接而成,局部是整体的一个小复制品。主要技术有相似变换及仿射变换。相似变换可放大缩小甚至旋转,但不变形;仿射变换指在不同方向上变化比率不同的比例变换,一般会改变图形中向量的夹角、点与点之间的距离、图形的面积等,可以将图形进行缩放、伸长、剪切、扭曲等. 仿射变换的数学表达式为如下,其中a,b,c,d,e,f 均为实数: 利用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.程序如下: 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); 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; function[xp,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 结语 虚拟植物技术已经成为当今计算机图形学应用领域的研究热点,本文结合最常用的模拟植物形态的两种方法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. Key words: fractal tree, L system , iterated function system, matlab 作者介绍: 尤鸿霞:女,(1980—),黑龙江伊春人,南通纺织职业技术学院信息系教师. 2006年毕业于无锡江南大学信息工程学院,获计算机应用技术硕士学位。 主要研究方向:模式识别,计算机图形学 作者联系方式: 手机:13906271365 办公室电话:0513-85228109 电子邮件 :youhx@ 5
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传
相似文档                                   自信AI助手自信AI助手

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服