




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
目錄TOC\o"1-2"\h\z\u1引言 12迭代函數(shù)系統(tǒng)和L-系統(tǒng) 12.1迭代函數(shù)系統(tǒng)原理 12.2L-系統(tǒng)原理 13分形植物模擬 23.1在MATLAB中的模擬 23.2L系統(tǒng)的模擬 53.3迭代函數(shù)系統(tǒng)與L系統(tǒng)的結(jié)合 7參考文獻 81引言隨著計算機技術(shù)的發(fā)展,分形幾何成了計算機圖形學(xué)的一個分支,它以分形幾何學(xué)為數(shù)學(xué)基礎(chǔ)構(gòu)造自相似的幾何結(jié)構(gòu),借助于計算機圖形學(xué)的支持模擬山脈、河流、地貌、云彩、植物等,產(chǎn)生人力所無法繪制的絢麗圖形,達到對自然景物的逼真模擬。自然場景的模擬在工程設(shè)計,如道路橋梁設(shè)計、城市規(guī)劃、多媒體電影以及電子游戲中越來越受到重視。植物,尤其是樹木,作為自然場景中必不可少的元素,是計算機模擬的重要對象。自然界中樹的種類繁多,形態(tài)各異,計算機要模擬出逼真的圖像具有一定的難度,這也給計算機圖像模擬帶來了新的研究課題。當前典型的分形植物模擬方法有兩種:L-系統(tǒng)和迭代函數(shù)系統(tǒng),但L-系統(tǒng)需先確定生成規(guī)則,簡潔但不夠靈活,且難于編程控制;迭代函數(shù)系統(tǒng)中仿射變換的確定較復(fù)雜,而且不能描繪細節(jié)。因此,單獨使用這兩種算法并不是最好的選擇。而將L-系統(tǒng)的字符串替換思想和遞歸算法相結(jié)合,從而找到一種能生動逼真地模擬植物形態(tài)的編程方法。2迭代函數(shù)系統(tǒng)和L-系統(tǒng)2.1迭代函數(shù)系統(tǒng)原理迭代函數(shù)系統(tǒng)(IteratedFunctionSystem)是分形繪制的典型重要方法。其采用確定性算法與隨機性算法相結(jié)合的辦法生成植物桿莖或葉片等分形圖。“確定性”指用以迭代的規(guī)則是確定性的,它們由一組仿射變換(如R1,R2,R3等)構(gòu)成;“隨機性”指迭代過程是不確定的,即每一次究竟迭代哪一個規(guī)則是隨機性的,設(shè)最終要生成的圖形(植物形態(tài)圖)為M,它要滿足集合方程:M=R1∪R2∪…∪RN。公式的含義是,隨機地從Ri(i=1,…,N)中挑選一個迭代規(guī)則迭代一次,然后再隨機地在Ri(i=1,…,N)中選一個規(guī)則迭代一次,不斷重復(fù)此過程,最后生成的極限圖形M就是欲求的植物形態(tài)圖。2.2L-系統(tǒng)原理L系統(tǒng)是指美國生物學(xué)家Lindenmayerl提出的植物生長的數(shù)學(xué)模型。一個串L系統(tǒng)是一個有序的三元素集合G=<V,ω,P>,這里ω是一個非空單詞,稱作公理,P是所謂產(chǎn)生式的有限集合,產(chǎn)生式寫作a->x,字母a和單詞x分別稱作產(chǎn)生式的前驅(qū)和后繼。令V表示字母表,V3表示V上的所有單詞的集合,規(guī)定對任何V中的字母a,至少存在一個非空單詞x,使得a->x。若對給定的前驅(qū)無明確解釋的產(chǎn)生式,則規(guī)定a->a這個特殊的產(chǎn)生式屬于P。對于L系統(tǒng)可以用較復(fù)雜的圖形解釋,在除了模擬植物分支拓撲結(jié)構(gòu)外,還要加上線段長度和轉(zhuǎn)角等幾何形狀。L系統(tǒng)的符號串也稱“龜行圖”(turtle),即設(shè)想一只烏龜在平面上爬行,烏龜?shù)臓顟B(tài)用三元組(X,Y,D)表示,其中X和Y分別代表橫坐標和縱坐標,D代表當前的朝向。令δ是角度增量,h是步長。文中所用L系統(tǒng)的符號規(guī)定與解釋:F——從當前位置向前移一步,步長為h,同時畫線;G——從當前位置向前移一步,步長為h,但不畫線;+——從當前方向逆時針轉(zhuǎn)一個給定的角度δ;-——從當前方向順時針轉(zhuǎn)一個給定的角度δ;|——原地轉(zhuǎn)向180°;[——Push,將龜行圖當前狀態(tài)壓進棧(stack);]——Pop,將圖形狀態(tài)重置為棧頂?shù)臓顟B(tài),并去掉該棧中的內(nèi)容;A——記錄狀態(tài)的方向;Z——記錄當前的位置。3分形植物模擬3.1在MATLAB中的模擬將迭代函數(shù)系統(tǒng)運用在MATLAB模擬軟件中可得出簡單的分形樹,根據(jù)迭代的次數(shù)不同,得到的圖形也不相同。程序代碼設(shè)計如下:functiontree(n,a,b)%tree(8,pi/8,pi/8),n為分形樹迭代次數(shù)%a,b為分枝與豎直方向夾角%x1,y1,x2,y2為初始線段兩端點坐標,nn為迭代次數(shù)x1=0;y1=0;x2=0;y2=1;plot([x1,x2],[y1,y2])holdon[X,Y]=tree1(x1,y1,x2,y2,a,b);holdonW=tree2(X,Y);w1=W(:,1:4);w2=W(:,5:8);%w為2^k*4維矩陣,存儲第k次迭代產(chǎn)生的分枝兩端點的坐標,%w的第i(i=1,2,…,2^k)行數(shù)字對應(yīng)第i個分枝兩端點的坐標w=[w1;w2];fork=1:nfori=1:2^k[X,Y]=tree1(w(i,1),w(i,2),w(i,3),w(i,4),a,b);W(i,:)=tree2(X,Y);endw1=W(:,1:4);w2=W(:,5:8);w=[w1;w2];end%由每個分枝兩端點坐標(x1,y1),(x2,y2)產(chǎn)生兩新點的坐標(x3,y3),(x4,y4),畫兩分枝圖形,并把%(x2,y2)連同新點橫、縱坐標分別存儲在數(shù)組X,Y中function[X,Y]=tree1(x1,y1,x2,y2,a,b)L=sqrt((x2-x1)^2+(y2-y1)^2);if(x2-x1)==0a=pi/2;elseif(x2-x1)<0a=pi+atan((y2-y1)/(x2-x1));elsea=atan((y2-y1)/(x2-x1));endendx3=x2+L*2/3*cos(a+b);y3=y2+L*2/3*sin(a+b);x4=x2+L*2/3*cos(a-b);y4=y2+L*2/3*sin(a-b);a=[x3,x2,x4];b=[y3,y2,y4];plot(a,b)axisequalholdonX=[x2,x3,x4];Y=[y2,y3,y4];%把由函數(shù)tree1生成的X,Y順次劃分為兩組,分別對應(yīng)兩分枝兩個端點的坐標,并存儲在一維%數(shù)組w中functionw=tree2(X,Y)a1=X(1);b1=Y(1);a2=X(2);b2=Y(2);a3=X(1);b3=Y(1);a4=X(3);b4=Y(3);w=[a1,b1,a2,b2,a3,b3,a4,b4];在MATLAB命令窗口中輸入:tree(4)可得到如圖:在MATLAB命令窗口中輸入:tree(6)可得到如圖:在MATLAB命令窗口中輸入:tree(8)可得到如圖:3.2L系統(tǒng)的模擬L系統(tǒng)用于植物結(jié)構(gòu)繪制,比如一棵樹,它是分支結(jié)構(gòu),即一根樹干帶大量的分枝,每個分枝都有一個終點,是一種一個起點多個終點的圖形。這就意味著在某一運算中,當畫到一個分枝的盡頭時畫筆必須退回來再畫其它結(jié)構(gòu),即產(chǎn)生一種所謂進退操作。該操作符號是一對方括號[·],方括號中是3個簡單符號,即F,+,-。當執(zhí)行完方括號中的指令后,畫筆回到方括號“[”前的位置并保持原方向不變。設(shè)公理W:F;生成規(guī)則P:F→FF+[+F-F-F]-[-F+F+F];角度增量a:22.5°。在公理中,從起點往上兩步后,先后作出兩個分枝,而每個分枝又分別右凸左凸,最后形成一棵風吹動著樹的模樣。其Ltree.m.程序代碼設(shè)計如下;在命令窗口運行Ltree(n),結(jié)果如圖。functionLtree(n)S='F';a=pi/8;A=pi/2;z=0;zA=[0,pi/2];p='FF+[+F-F-F]-[-F+F+F]';fork=2:n;S=strrep(S,'F',p);endfigure;holdon;fork=1:length(S);switchS(k);case'F'plot([z,z+exp(i*A)],'linewidth',2);z=z+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在MATLAB命令窗口中輸入:Ltree(3)可得到如圖:在MATLAB命令窗口中輸入:Ltree(4)可得到如圖:在MATLAB命令窗口中輸入:Ltree(5)可得到如圖:3.3迭代函數(shù)系統(tǒng)與L系統(tǒng)的結(jié)合在生成規(guī)則中,通過遞歸過程的設(shè)計,即能產(chǎn)生預(yù)期的分形植物圖形。根據(jù)生成規(guī)則P,當前n代的字符串語言描述可用表1說明。表1代字符串語言描述表迭代次數(shù)nL生產(chǎn)的字符串1F2F[+F]F[-F]3F[+F]F[-F][+F][+F[+F]F[-F]]F[+F]F[-F]F[+F]F[-F][-F][-F[+F]F[-F]]……將L系統(tǒng)的m文件代碼中的P用迭代函數(shù)系統(tǒng)進行迭代,得到新的字符串,并取而代之,在MATLAB命令窗口中輸入:Ltree(3)可得到如圖:經(jīng)過對比,很明顯可以看出第三種方法做出的圖更自然于迭代函數(shù)系統(tǒng)和L系統(tǒng)做出的圖。參考文獻[1]李水根.分形[M].北京:高等教育出版社,2004.[2]清源計算機工作室.MATLAB基礎(chǔ)及其應(yīng)用[M].北京:機械工業(yè)出版社,2
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- (高清版)DB3310∕T 11-2013 空調(diào)室外機安裝服務(wù)規(guī)范
- 2024籃球裁判員成長計劃及試題與答案
- 2024年奮戰(zhàn)體育經(jīng)紀人資格考試的決心試題及答案
- 深入理解2024年足球裁判規(guī)則試題及答案
- 2024年模具設(shè)計師資格考試的互動方式試題及答案
- 關(guān)于成立寵物經(jīng)濟公司可行性研究報告(參考模板)
- 農(nóng)業(yè)植保員職業(yè)技能測試題試題及答案
- 電子信息產(chǎn)業(yè)園項目可行性研究報告
- 成功經(jīng)驗分享2024年體育經(jīng)紀人試題及答案
- 農(nóng)作物安全保護的試題及答案指南
- +山東省泰安市肥城市2023-2024學(xué)年七年級下學(xué)期期中考試英語試題+
- (高清版)JTGT 5440-2018 公路隧道加固技術(shù)規(guī)范
- 北京市各區(qū)2024屆高三二模政治試題匯編:法律與生活-2024屆高考政治三輪沖刺
- 深靜脈血栓形成的診斷和治療指南文檔
- 浙江省環(huán)大羅山聯(lián)盟2023-2024學(xué)年高一下學(xué)期4月期中考試歷史試題(解析版)
- 建筑邊坡工程監(jiān)測技術(shù)標準
- 《化學(xué)與社會發(fā)展》單元檢測3
- 基于stm32的智能煙灰缸設(shè)計
- 2023年江蘇省徐州市中考地理真題含解析
- 如何有效利用碎片時間學(xué)習
- 產(chǎn)品開發(fā)項目管理
評論
0/150
提交評論