分形理論在計算機(jī)圖形學(xué)中的應(yīng)用—免費(fèi)畢業(yè)設(shè)計論文_第1頁
分形理論在計算機(jī)圖形學(xué)中的應(yīng)用—免費(fèi)畢業(yè)設(shè)計論文_第2頁
分形理論在計算機(jī)圖形學(xué)中的應(yīng)用—免費(fèi)畢業(yè)設(shè)計論文_第3頁
分形理論在計算機(jī)圖形學(xué)中的應(yīng)用—免費(fèi)畢業(yè)設(shè)計論文_第4頁
分形理論在計算機(jī)圖形學(xué)中的應(yīng)用—免費(fèi)畢業(yè)設(shè)計論文_第5頁
已閱讀5頁,還剩47頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、i 學(xué)院理學(xué)學(xué)士學(xué)位論文學(xué)院理學(xué)學(xué)士學(xué)位論文 分形理論在計算機(jī)圖形學(xué)中的應(yīng)用 -位圖與矢量圖形變換 ii 目錄 目目錄錄. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .i i 摘摘要要. . . . . . . . . . . . . . . . . . . . . . . . . . . . .

2、 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .i ii i a ab bs st tr ra ac ct t. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

3、 . . . . .i ii ii i 第第一一章章 分分形形概概論論. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1 1 1.1 什么是分形 .1 1.2 分形的應(yīng)用 .1 1.3 本文選題的背景.2 第第二二章章 分分形形相相關(guān)關(guān)理理論論問問題題 . . . . . . . . . . . . . . . . . . . . . . .

4、. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3 3 2.1 julia集 .3 2.2 逃逸時間算法的基本思想 .4 2.3 逃逸時間算法繪制 julia集與 mandelbrot集.4 2.4 分形圖形著色方案 .6 2.5 julia集與 mandelbrot集圖形的矢量變換.7 2.6 二維元胞自動機(jī)生成分形圖案 .10 2.7 gumowski-mira公式.11 2.8 分形圖形的位圖操作 .11 第第三三章章 畢畢業(yè)業(yè)設(shè)設(shè)計計結(jié)結(jié)果果和和分分析析

5、 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2 23 3 3.1 程序概況 .23 3.2 程序說明.27 3.3 補(bǔ)充說明 .31 參參考考文文獻(xiàn)獻(xiàn) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

6、. . . . . . . . . . . . . . . . . . . . . . . . . .3 32 2 致致 謝謝. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3 33 3 a ap pp pe en nd di ix x. . . . . . . . . . . . . . . . . . .

7、 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3 34 4 附附錄錄. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

8、 . . . . . .4 40 0 學(xué)士學(xué)位論文 摘要 iii 摘要 分形是一門幾何學(xué)科,它研究的是歐氏空間的一類子集,但很難對它下一個確切 的定義??梢院唵蔚卣f,如果一個對象的部分與整體具有自仿射變換關(guān)系,我們就可 以稱它為分形。自分形之父曼德勃羅(benoit mandelbrot)在 1975 年出版專著分 形對象:形、機(jī)遇與維數(shù) ,標(biāo)志著分形理論正式誕生以來。分形已經(jīng)廣泛應(yīng)用于物理、 化學(xué)、生物、醫(yī)學(xué)、計算機(jī)科學(xué)等諸多領(lǐng)域,而本文著眼于分形理論與計算機(jī)知識的 結(jié)合。 因?yàn)榉中螆D形有極強(qiáng)的藝術(shù)性,繪制得當(dāng),可以產(chǎn)生非常漂亮的圖片,因此可以 用于裝飾,包裝,服裝等需要藝術(shù)圖案的場所。本文

9、重點(diǎn)介紹了分形圖形的重要生成 算法逃逸時間算法,并且詳細(xì)說明了使用逃逸時間算法生成 julia 集與 mandelbrot 集的算法過程。另外,本文也詳細(xì)說明了分形圖形的一種著色方案,它可 以使分形圖形的著色過程更富有過渡性,從而使圖形具有更強(qiáng)的美感。本文還詳細(xì)說 明了分形圖形在計算機(jī)圖形學(xué)相關(guān)理論上的應(yīng)用,比如分形圖形的矢量移動,旋轉(zhuǎn), 縮放,以及對分形圖形進(jìn)行相關(guān)特殊變換,此外,還可修改圖形的參數(shù),修改圖形的 顏色等等。本文還涉及了元胞機(jī)自動圖案的生成以及 gumowski-mira 分形,生成了經(jīng) 典的三翅鷹圖形,并且實(shí)現(xiàn)了對其色彩的編輯功能。 因?yàn)榉中螆D形展示的是數(shù)學(xué)與藝術(shù)的成果,它日

10、益受到人們的重視,甚至引發(fā)了 分形是不是藝術(shù)的討論,隨著時間的流逝,分形是一種藝術(shù)已經(jīng)為人們所承認(rèn),分形 與計算機(jī)的結(jié)合也越來越緊密,計算機(jī)圖形學(xué)中已經(jīng)專門引入了分形算法,以生成自 然景觀等。另外,分形在其它學(xué)科的應(yīng)用也日益廣泛,可見,分形在今后會得到更大 的發(fā)展,有更廣闊的應(yīng)用空間。 關(guān)鍵詞關(guān)鍵詞:分形,矢量變換,julia 集,mandelbrot 集,逃逸時間算法 理學(xué)學(xué)士學(xué)位論文 abstract iv abstract fractal is a geometrical subject. it studies a subset of euclidean geometry and can

11、t be defined exactly. say in a simple way, if one part of an object is affine with another part of this, we can say this object is a fractal. from 1975 benoit mandelbrot published his works fractal: form, chance and dimension, the theory of fractal is wildly used in physics, chemistry, biology, medi

12、cine, computer science etc. and this topic dedicate for the use of fractal theory in computer. because the beauty of the fractal picture, if drawing in a good way, you can get a perfect picture, so the picture can be used for dress, porcelain, and so on. this topic point of the escaping time algorit

13、hm is the main way of drawing the fractal picture, but also show a new way to render the fractal picture in detail, it can give the picture more smoothly color change, thereby it give the picture more aesthetic feeling. further, this topic explain the use of computer graphics theory in the fractal p

14、ictures creating, for example the vector move, circumvolve, zoom in, zoom out, and other vector transformation. in addition, picture parametric can be changed and picture colour can also be changed .this topic involved the gumowski-mira fractal, two dimension cellular automata fractal. fractal unfur

15、l an new world buildup with math and arts, along with time flying, people think over fractal more and more, even brought an argument that fractal drawing is or not an art. all think fractal picture is an art production today, and also, fractal is used more and more in computer science. the computer

16、graphics even add a new fractal algorithm to create nature sight. aside, fractal theory used wider and wider in other subjects. we can say, fractal theory will use wider and deeper. key words: fractal, julia set, mandelbrot set, vector transformation, escaping time algorithm 理學(xué)學(xué)士學(xué)位論文 第一章 分形概論 1 第一章

17、分形概論 1.1 什么是分形 什么是分形呢?很難給分形下一個確切的定義。嚴(yán)格地而且正式地去定義分形是 一件非常復(fù)雜而且困難的事情。但是,有一些不太正規(guī)的定義卻可以幫助我們理解分 形的含義。在這些定義中,最為流行的一個定義是:分形是一種具有自相似特性的現(xiàn) 象、圖像或者物理過程。也就是說,在分形中,每一組成部分都在特征上和整體相似, 只僅僅是變小了一些而已。分形在英文中為 fractal,是由美籍法國數(shù)學(xué)家曼德勃羅 (benoit mandelbrot)創(chuàng)造出來的。這個詞意為不規(guī)則的,破碎的,分?jǐn)?shù)的。曼德勃羅 想用此詞來描述自然界中傳統(tǒng)歐氏幾何不能描述的一大類復(fù)雜不規(guī)則的幾何對象,例 如,曲折的海

18、岸線,起伏的山脈,變幻的浮云,縱橫的血管等,它們有一個共同的特 點(diǎn)就是極不規(guī)則或極不光滑,直觀而粗略地說,這些對象都是分形。分形作為幾何對 象,是破碎的,不規(guī)則的,但不是所有破碎的,不規(guī)則的形狀都是分形,分形一般還 具有自相似性,一個對象的部分與整體有自仿射變換關(guān)系,我們也可以稱之為分形。 1.2 分形的應(yīng)用 分形幾何學(xué)已在自然界與物理學(xué)中得到了應(yīng)用。如在顯微鏡下觀察落入溶液中的 一?;ǚ?,會看見它不間斷地作無規(guī)則運(yùn)動(布朗運(yùn)動) ,這是花粉在大量液體分子的 無規(guī)則碰撞下表現(xiàn)的平均行為。布朗粒子的軌跡,由各種尺寸的折線連成。只要有足 夠的分辨率,就可以發(fā)現(xiàn)原以為是直線段的部分,其實(shí)由大量更小尺

19、度的折線連成。 這是一種處處連續(xù),但又處處無導(dǎo)數(shù)的曲線。這種布朗粒子軌跡的分維是 2,大大高于 它的拓?fù)渚S數(shù) 1。 在某些電化學(xué)反應(yīng)中,電極附近成績的固態(tài)物質(zhì),以不規(guī)則的樹枝形狀向外增長。 受到污染的一些流水中,粘在藻類植物上的顆粒和膠狀物,不斷因新的沉積而生長, 成為帶有許多須須毛毛的枝條狀,就可以用分維。 自然界中更大的尺度上也存在分形對象。一枝粗干可以分出不規(guī)則的枝杈,每個 枝杈繼續(xù)分為細(xì)杈,至少有十幾次分支的層次,可以用分形幾何學(xué)去測量。當(dāng)然, 理學(xué)學(xué)士學(xué)位論文 第一章 分形概論 2 還有海岸線的長度到底是多少這個問題也用到分形。 有人研究了某些云彩邊界的幾何性質(zhì),發(fā)現(xiàn)存在從 1 公里

20、到 1000 公里的無標(biāo)度區(qū)。 小于 1 公里的云朵,更受地形概貌影響,大于 1000 公里時,地球曲率開始起作用。大 小兩端都受到一定特征尺度的限制,中間有三個數(shù)量級的無標(biāo)度區(qū)。分形存在于這中 間區(qū)域。 近幾年在流體力學(xué)不穩(wěn)定性、光學(xué)雙穩(wěn)定器件、化學(xué)震蕩反映等試驗(yàn)中,都實(shí)際 測得了混沌吸引子,并從實(shí)驗(yàn)數(shù)據(jù)中計算出它們的分維。學(xué)會從實(shí)驗(yàn)數(shù)據(jù)測算分維是 最近的一大進(jìn)展。分形幾何學(xué)在物理學(xué)、生物學(xué)上的應(yīng)用也正在成為有充實(shí)內(nèi)容的研 究領(lǐng)域。 1.3 本文選題的背景 分形幾何,這門新的數(shù)學(xué)分支一創(chuàng)立,就日益受到各國學(xué)者的重視,在過去的十 幾年里,分形科學(xué)已有了很大的發(fā)展。她在純數(shù)學(xué)、物理學(xué)、材料科學(xué)、

21、地質(zhì)勘探、 疾病診斷、股價預(yù)測以及計算機(jī)和信息科學(xué)等許多領(lǐng)域中,都得到了廣泛的應(yīng)用。并 且由于分形幾何方法的引入,使一些原已死寂的老學(xué)科方向煥發(fā)了新的生機(jī),也使一 些正蓬勃發(fā)展的新學(xué)科獲得了巨大的推動力。分形幾何與計算機(jī)科學(xué)的結(jié)合就是一個 明顯的例證。一方面,分形理論推動了計算機(jī)繪圖方法的迅速發(fā)展,使計算機(jī)在信息 壓縮及模仿自然現(xiàn)象中的各種奇妙圖形發(fā)揮了重要的作用;另一方面,計算機(jī)的應(yīng)用 也大大地推動了分形理論的發(fā)展,并且由于模擬分形圖成功而展現(xiàn)出優(yōu)美的分形圖像, 迅速提高了分形這門新興科學(xué)的聲望,擴(kuò)大了她的影響。目前用計算機(jī)繪制分形圖是 如此流行,以致不僅使繪制分形的算法理論與程序設(shè)計已成為

22、一個獨(dú)立的研究方向, 同時繪制的分形圖也已成了一種相當(dāng)時髦的藝術(shù)形式。并且分形圖形已經(jīng)開始應(yīng)用在 包裝,服裝,陶瓷裝飾上面。分形理論已經(jīng)極廣泛地應(yīng)用在計算機(jī)圖形學(xué)中,許多的 計算機(jī)游戲與虛擬現(xiàn)實(shí)中大量應(yīng)用到分形理論。 理學(xué)學(xué)士學(xué)位論文 第二章 分形相關(guān)理論問題 3 第二章 分形相關(guān)理論問題 2.1 julia 集 julia 集是分形中的一個經(jīng)典集合,它的基本函數(shù)形式為:,其中 2 ( )f zzc z 與 c 都為復(fù)數(shù)。先考慮 c=0 的情況,z 是復(fù)數(shù),即 z=x+yi,則有: 222 222 ()()2()2zzzxyixyixy ixyixyxyi 我們還可以定義復(fù)數(shù) z=x+yi 的

23、絕對值,即:,而|z|恰好相反是從 22 | zxy 原點(diǎn)到 z 的距離。 下面討論的一些性質(zhì),假設(shè)此方程以點(diǎn),且開始迭代, 2 ( )f zz 000 zxy i 0 | 1z 則有: 22 00000 |()| |2|f zxyx y 2222 0000 ()(2)xyx y 442222 000000 24xyx yx y 222 00 ()xy 因此,在區(qū)域中,這意味著對的每一個一次 0 0 | 1z 00 |()| |f zz 2 ( )f zz 迭代,即,都會使 z 向靠 0 的方向移動,可以說此時 z 向 0 收斂。 2 1nn zz 當(dāng)時,通過上面的計算,可以得知,此時 z 會

24、趨向于。 0 | 1z 當(dāng)時,很顯然,z 是平面單位圓上的點(diǎn)。 0 | 1z 于是,我們發(fā)現(xiàn),復(fù)平面上可分為兩個區(qū)域,一個區(qū)域合落在其中的點(diǎn)向 0 收 斂,而另一個區(qū)域合落在其中的點(diǎn)向逃逸,它們的分界線便是。 0 |()| 1f z 然而,當(dāng)時,它向一個區(qū)域收斂,而不是向一個點(diǎn)收斂,被吸進(jìn)去的點(diǎn)會0c 遍歷整個區(qū)間,我們稱這個區(qū)間為混沌區(qū)。與此同時,分割混沌區(qū)和向逃逸的分界 線不再是的單位圓,它將是一個不規(guī)則、不光滑的分界線。 0 |()| 1f z julia 集圖形:見圖 3.1.1。 理學(xué)學(xué)士學(xué)位論文 第二章 分形相關(guān)理論問題 4 2.2 逃逸時間算法的基本思想 根據(jù)上述想法,我們將吸引

25、域的概念進(jìn)一步擴(kuò)展。如圖 2.2 所示,假設(shè)有一個充分 大的整數(shù) n,當(dāng)未逃逸區(qū)域 m 中的初始點(diǎn) a 經(jīng)過小于 n 次迭代就達(dá)到未逃逸區(qū)域 m 的邊界,甚至超出了邊界,我們就認(rèn)為點(diǎn) a 逃逸出去了;而如果經(jīng)過 n 次迭代后,a 的軌跡仍未到達(dá) m 的邊界,我們就認(rèn)為 a 是 a 上的點(diǎn),用這樣的方法描繪出 a 的邊界 圖形,這就是逃逸時間算法的基本思想。 逃逸區(qū) m 收斂區(qū)域 a 未逃逸區(qū) m 逃逸邊界 圖 2.2.1 2.3 逃逸時間算法繪制 julia 集與 mandelbrot 集 1,從逃逸時間算法的角度來看,julia 集的內(nèi)部收斂于某一個點(diǎn)或者幾個點(diǎn),而 julia 集的外部隨著

26、逃逸時間 t 的增加將發(fā)散至,其逃逸邊界就是 julia 集。julia 集的逃逸時間算法如下: 假設(shè)繪圖窗口的寬度為 width,高度為 height。 選定參數(shù), 1 cpqi ,m=100,maxtime=200,令: minmin 1.5xy maxmax 1.5xy maxmin ()/(1)xxxwidth maxmin ()/(1)yyyheight 理學(xué)學(xué)士學(xué)位論文 第二章 分形相關(guān)理論問題 5 其中 c 表示復(fù)數(shù)上一個點(diǎn),表示參數(shù)窗口大小,m 表示逃 min x max x min y max y 逸邊界值,maxtime 表示循環(huán)可以執(zhí)行的最大次數(shù)。對所有的點(diǎn) ,完成如下步

27、驟的循環(huán):(,),0,1,2,3.10,1,2,3.1 xyxy n nnwidthnheight及 令,t=0。 2 0min * x xxnx 0min * y yyny 根據(jù)下列的迭代過程從算出,計數(shù) t=t+1。 3 ( ,) tt x y 11 (,) tt xy 22 1 1 2 ttt ttt xxyp yx yq 計算: 4 22 tt rxy 如果,則轉(zhuǎn)到步驟。rm 5 如果,且,則轉(zhuǎn)至步驟。rmmaxttime 3 如果,轉(zhuǎn)到步驟。maxttime 5 對點(diǎn)著色,并轉(zhuǎn)至下一步,再頭從做步驟。著色方案將在下面作詳細(xì) 5 (,) xy n n 2 介紹。 julia 集圖形:見

28、圖 3.1.1。 2,繪制 mandelbrot 集:設(shè) z=x+yi,c=p+qi,c 的取值范圍為: minmax minmax :, :, ppp qqq 假設(shè)繪圖窗口的寬度為 width,高度為 height。 1 minmaxminmax p=-2.2,p=1.0,q=-1.1,q=1.4 ,逃逸半徑 m=100,maxtime=200,對繪 圖窗口中所有的點(diǎn),完成如下步(,) pq nn0,1,2.1,0,1,2.1 pq nwidthnheight 驟。 令 2 maxmin ()/(1)xxxwidth maxmin ()/(1)yyyheight 利用下式從( ,) kk x

29、y 得到 11 (,) kk xy ,計數(shù) k=k+1 3 22 1 1 2 kkk kkk xxyp yx yq 計算: 4 22 tt rxy 如果,則轉(zhuǎn)到步驟。rm 5 如果,且,則轉(zhuǎn)至步驟。rmmaxttime 3 理學(xué)學(xué)士學(xué)位論文 第二章 分形相關(guān)理論問題 6 如果,轉(zhuǎn)到步驟。maxttime 5 對點(diǎn)著色,轉(zhuǎn)至下一點(diǎn),步驟。 5 (,) pq nn 1 讀完所有參數(shù)空間的點(diǎn)(p,q) ,結(jié)束循環(huán)。 6 mandelbrot 集圖形:見圖 3.1.2。 2.4 分形圖形著色方案 rgb 色彩模式是工業(yè)界的一種顏色標(biāo)準(zhǔn),是通過對紅(r)、綠(g)、藍(lán)(b)三個顏色 通道的變化以及它們相

30、互之間的疊加來得到各式各樣的顏色的,rgb 即是代表紅、綠、 藍(lán)三個通道的顏色,這個標(biāo)準(zhǔn)幾乎包括了人類視力所能感知的所有顏色,是目前運(yùn)用 最廣的顏色系統(tǒng)之一。目前的顯示器大都是采用了 rgb 顏色標(biāo)準(zhǔn),目前的電腦一般都 能顯示 32 位顏色,約有一百萬種以上的顏色。在數(shù)字視頻中,對 rgb 三基色各進(jìn)行 8 位編碼就構(gòu)成了大約 16.7 萬種顏色,這就是我們常說的真彩色。我們對分形圖形進(jìn) 行著色也使用這種色彩模型。 顏色設(shè)置:我們根據(jù)逃逸時間算法的循環(huán)次數(shù)來給分形圖著色,假定 k 為循環(huán)次 數(shù),也就是上面所說的逃逸時間,time 為顏色銳化值,m_nred,m_ngreen,m_nblue 為

31、 r,g,b 的初始值,有如下結(jié)果: k *= time; red = k + m_ngreen; green = k +m_nblue; blue = k + m_nred; 下面對求得的 red,green,blue 三個值進(jìn)行變換。因?yàn)槌绦蚶L圖時使用 24 位真彩 色,所以 r,g,b 三個值的大小都不應(yīng)該超過 8 位的最大值,即 255,而這個 8 位的最 大值,用 16 進(jìn)制表示就是 0 xff。如果 r,g,b 中的任何一個值大于 0 xff,就對其進(jìn)行 0 xff 的位運(yùn)算。然后再將根據(jù)上述步驟求得的 r、g、b,用函數(shù) rgb(r,g,b)換成色 彩,從而實(shí)現(xiàn)對 julia 集

32、的著色。用計算機(jī)語言來表示就是這樣: if (red if (green if (blue 上面的 red,green,blue 分別表示 rgb 顏色模型中的 r,g,b。red,green,blue 與 0 x1ff 進(jìn)行 xmax = xmin + tmpdouble; tmpdouble = ymax - ymin; ymin = ymin - y * (newpoint.y - oldpoint.y); ymax = ymin + tmpdouble; 經(jīng)過實(shí)驗(yàn)證明,這個方法對 julia 集與 mandelbrot 集都適用。 圖形矢量移動前后效果對比參見圖 3.1.1 與圖 3.

33、1.8。 2,julia 集與 mandelbrot 集的矢量放大:先說明對 mandelbrot 集的放大, mandelbrot 集是將參數(shù) c 走遍參數(shù)窗口的所有值,經(jīng)過逃逸時間算法的運(yùn)算最終 在繪圖窗口中畫出圖來,由此可知,參數(shù)窗口的大小和位置就決定了所繪 理學(xué)學(xué)士學(xué)位論文 第二章 分形相關(guān)理論問題 8 mandelbrot 集的放大區(qū)域。已知, maxmin ()/(1)xxxwidth ,其中 maxmin ()/(1)yyyheight min * t ppxp min * t qqyq ,可以得出:0,1,2.1 t xn0,1,2.1 t yn min min * * ppx

34、p qqyq 從而可得: 用計算機(jī)語言來描述就是: xmin = xmin + x*oldpoint.x; xmax = tmpdouble + x*newpoint.x; tmpdouble = ymin; ymin = ymin + y*oldpoint.y; ymax = tmpdouble + y*newpoint.y; 這樣我們只要將得到的(xmin,ymin),(xmax,ymax)代替原來的參數(shù)窗口值就可以 實(shí)現(xiàn)對窗口的放大了。 julia 集的放大原理與 mandelbrot 集的放大原理相同,就不再贅述了。 圖形的矢量放大前后效果對比見圖 3.1.1 與圖 3.1.9。 3,

35、julia 集的旋轉(zhuǎn): 由計算機(jī)圖形學(xué)可知,在二維平面上按指定位置旋轉(zhuǎn),需要經(jīng)過三個步驟: rr (x ,y ) 1、平移對象使移動點(diǎn)位置移到坐標(biāo)原點(diǎn)。 2、繞坐標(biāo)原點(diǎn)旋轉(zhuǎn)。 3、平移對象使基準(zhǔn)點(diǎn)回到其原始位置。將其寫成矩陣形式如下: 100cossin010 010 * sincos0 * 01 001001001 cossin(1 cos )sin sincos(1 cos )sin 001 r r r r x y xy yx 轉(zhuǎn)換成式子如下: minminmin minminmin maxmaxmax maxmaxmax * * * * ppxp qqxq ppxp qpxp 理學(xué)學(xué)士學(xué)

36、位論文 第二章 分形相關(guān)理論問題 9 rrr rrr x = x + (x-x )*cos - (y-y )*sin y = y + (x-x )*sin + (y-y )*cos 將這個式子應(yīng)用到 julia 集繪制算法中,這里假定繞屏幕的中點(diǎn)旋轉(zhuǎn),屏幕的寬度 為 width,高度為 height,用坐標(biāo)表示為(width/2,height/2),從前面繪制 julia 集的方法中可知下列兩個步驟: ,。 1 0min * x xxnx 0min * y yyny 根據(jù)下列的迭代過程從算出,計數(shù) t=t+1。 2 ( ,) tt x y 11 (,) nn xy 22 1 1 2 ttt t

37、tt xxyp yx yq 這里只需要修改的值,所以可得:, xy n n x xxy y temp = n n = width/2 + (n - width/2) * cos - (n - height/2) * sin n = height/2 + (temp - width/2) * sin + (ny - height/2) * cos 再將獲得的,進(jìn)行,的運(yùn)算,得到新的。, xy n n min * tx xxnx min * ty yyny, tt x y 再將進(jìn)行下一步運(yùn)算即可實(shí)現(xiàn)對 julia 集的旋轉(zhuǎn)。圖形的矢量旋轉(zhuǎn)前后效果對比, tt x y 見圖 3.1.1 與圖 3.1

38、.12。 4,將 julia 集壓縮到 mandelbrot 集的收斂區(qū)域,要將 julia 集壓縮到 mandelbrot 集收 斂區(qū)域中,需要先對前面繪制 julia 集算法中提到的進(jìn)行 mandelbrot 集(,) nn xy 算法變換,然后再進(jìn)行 julia 集算法變換。又因?yàn)樘右輹r間算法繪制 julia 集和 繪制 mandelbrot 集的步驟都是一樣的,差別只體現(xiàn)在步驟,即由計算 3 (,) nn xy 出 11 (,) nn xy 這一步。即要在前面提到的繪制 julia 集的計算機(jī)算法步驟后面 2 添加下列幾步算法: 令 t1=-0.7,t2=,i=0,t3=t4=0,n=

39、10 進(jìn)行如下循環(huán)。 a 0 x 0 x b 0 0 t3 = t1 * t1 - t2 * t2 + x -0.7 t4 = 2 * t1 * t2 + y t1 = t3 t2 = t4 計數(shù) i=i+1。 如果 in,返回步驟,否則。 c b 00 x =t1,y =t2 返回值,回到算法步驟繼續(xù)進(jìn)行運(yùn)算。 d 00 x ,y 3 理學(xué)學(xué)士學(xué)位論文 第二章 分形相關(guān)理論問題 10 算法的效果圖參見圖 3.1.5。 2.6 二維元胞自動機(jī)生成分形圖案 元胞分布在二維歐氏幾何平面上規(guī)則劃分的網(wǎng)格點(diǎn)上,則稱它為二維元胞自動 機(jī)。為了使用二維元胞自動機(jī)繪圖,假定有一個的網(wǎng)絡(luò),其左上角的格子為aa

40、 (0,0) ,右下角的格子為(a-1,a-1) ,這樣主要是為了對應(yīng)計算機(jī)的屏幕坐標(biāo)。且每 個格子的初始狀態(tài)均為 0,即 f(x,y)=0,設(shè),將此網(wǎng)格 0000 /2,/2,(,)1xayaf xy 的中心部分點(diǎn)為中心,將以外的點(diǎn)分成若干層次,緊靠的 8 個 00 (,)xy 00 (,)xy 00 (,)xy 點(diǎn)為第一層,緊靠第一層外面的 16 點(diǎn)為第二層,緊靠第二層外面的 24 個點(diǎn)為第三 層,以此類推,一直到最外面一層。 此網(wǎng)格共有 a/2 層,設(shè) k 為層數(shù),從 k=1 到 k=a/2,進(jìn)行如下循環(huán): 設(shè)第 k 層中任意點(diǎn)為,則判斷其臨近 8 點(diǎn)的現(xiàn)有狀態(tài);如果 1 ( ,) ii

41、 x y (1,1)( ,1)(1,1)(1,) (1,1)( ,1)(1,1)(1,) iiiiiiii iiiiiii f xyf x yf xyf xy f xyf x yf xyf xy 奇數(shù) 則 ( ,)1 ii f x y 否則( ,)0 ii f x y 當(dāng)每一層中所有點(diǎn)判斷完結(jié)后,進(jìn)行下一步。 對的點(diǎn)著色。 2 ( ,)1 ii f x y k=k+1,返回到步驟,直至循環(huán)結(jié)束。 3 1 圖形參見:圖 3.1.4。 2.7 gumowski-mira 公式 1980 年,工作在 cern 的物理學(xué)家 gumowski, i. 和 mira, c. 嘗試計算模擬基本 粒子軌跡(t

42、he trajectories of elementary particles) 在加速器 (accelerator) 中的行為。他 們使用了這組方程: n+1n n+1n+1 x = b* + f(x ) y = -x + f(x) n y 其中的函數(shù) f(x)是他們所考慮的模型,其中一個主要的模型他們使用了: f(x) = a* + 2*(1-a)*x*x/(1+x*x) x 理學(xué)學(xué)士學(xué)位論文 第二章 分形相關(guān)理論問題 11 其中 a 是一個參數(shù),通常在-1 和 1 之間,b 是一個非常敏感的常數(shù),通常非常接近于 1.0。如果 b 有一個輕微增長到 1.001,軌跡會膨脹,或者螺旋向外至無

43、限; 如果 b 有 一個輕微的減小,比如 0.999, 那么軌跡會收縮至奇異吸引子 (the attractor points)。 最后一個重要的影響因素是初始值,典型的初始值 x 和 y 在 -20 和 20 之間。 下面是繪制 gumowski-mira 分形圖的算法: 假定 a=-0.4,b=0.93,i=0,x=1,y=1。 1 進(jìn)行計算: 2 z = x; x = b * y + w; w = a * x + 2 * (1-a) * x * x / (1 + u); y = w - z; i = i + 1; 如果 ileft; pt1.y = lprect-top; pt2.x =

44、 lprect-right; pt2.y = lprect-bottom; clienttoscreen(hwnd, clienttoscreen(hwnd, lprect-left = pt1.x; lprect-top = pt1.y; lprect-right = pt2.x; lprect-bottom = pt2.y; / get the dib of the client area by calling / copyscreentodib and passing it the client rect hdib = copyscreentodib(lprect); / return

45、the handle to the dib return hdib; hdib cglobal:copyscreentodib(lprect lprect) hbitmap hbitmap; / handle to device-dependent bitmap hpalette hpalette; / handle to palette hdib hdib = null; / handle to dib / get the device-dependent bitmap in lprect by calling / copyscreentobitmap and passing it the

46、rectangle to grab hbitmap = copyscreentobitmap(lprect); / check for a valid bitmap handle 理學(xué)學(xué)士學(xué)位論文 第二章 分形相關(guān)理論問題 14 if (!hbitmap) return null; / get the current palette hpalette = getsystempalette(); / convert the bitmap to a dib hdib = bitmaptodib(hbitmap, hpalette); / clean up deleteobject(hpalette

47、); deleteobject(hbitmap); / return handle to the packed-dib return hdib; hbitmap cglobal:copyscreentobitmap(lprect lprect) hdc hscrdc, hmemdc; / screen dc and memory dc hbitmap hbitmap, holdbitmap; / handles to deice-dependent bitmaps int nx, ny, nx2, ny2; / coordinates of rectangle to grab int nwid

48、th, nheight; / dib width and height int xscrn, yscrn; / screen resolution / check for an empty rectangle /messagebox(hwnd)afxgetapp()-getmainwnd(),122,123,null); if (isrectempty(lprect) return null; / create a dc for the screen and create / a memory dc compatible to screen dc hscrdc = createdc(displ

49、ay, null, null, null); hmemdc = createcompatibledc(hscrdc); / get points of rectangle to grab nx = lprect-left; ny = lprect-top; 理學(xué)學(xué)士學(xué)位論文 第二章 分形相關(guān)理論問題 15 nx2 = lprect-right; ny2 = lprect-bottom; / get screen resolution xscrn = getdevicecaps(hscrdc, horzres); yscrn = getdevicecaps(hscrdc, vertres); /

50、make sure bitmap rectangle is visible if (nx 0) nx = 0; if (ny xscrn) nx2 = xscrn; if (ny2 yscrn) ny2 = yscrn; nwidth = nx2 - nx; nheight = ny2 - ny; / create a bitmap compatible with the screen dc hbitmap = createcompatiblebitmap(hscrdc, nwidth, nheight); / select new bitmap into memory dc holdbitm

51、ap = (hbitmap)selectobject(hmemdc, hbitmap); / bitblt screen dc to memory dc bitblt(hmemdc, 0, 0, nwidth, nheight, hscrdc, nx, ny, srccopy); / select old bitmap back into memory dc and get handle to / bitmap of the screen hbitmap = (hbitmap)selectobject(hmemdc, holdbitmap); / clean up deletedc(hscrd

52、c); deletedc(hmemdc); / return handle to the bitmap return hbitmap; 理學(xué)學(xué)士學(xué)位論文 第二章 分形相關(guān)理論問題 16 位圖格式轉(zhuǎn)換函數(shù): hdib cglobal:bitmaptodib(hbitmap hbitmap, hpalette hpal) bitmap bm; / bitmap structure bitmapinfoheader bi; / bitmap header lpbitmapinfoheader lpbi; / pointer to bitmapinfoheader dword dwlen; / siz

53、e of memory block handle hdib, h; / handle to dib, temp handle hdc hdc; / handle to dc word bibits; / bits per pixel / check if bitmap handle is valid if (!hbitmap) return null; / fill in bitmap structure, return null if it didnt work if (!getobject(hbitmap, sizeof(bm), (lpbyte) / if no palette is s

54、pecified, use default palette if (hpal = null) hpal = (hpalette)getstockobject(default_palette); / calculate bits per pixel bibits = bm.bmplanes * bm.bmbitspixel; / make sure bits per pixel is valid if (bibits = 1) bibits = 1; else if (bibits = 4) bibits = 4; else if (bibits bisize + palettesize(lpb

55、yte)lpbi), (lpbitmapinfo)lpbi, dib_rgb_colors) = 0) / clean up and return null globalunlock(hdib); hdib = null; selectpalette(hdc, hpal, true); realizepalette(hdc); releasedc(null, hdc); return null; bi = *lpbi; / clean up globalunlock(hdib); selectpalette(hdc, hpal, true); realizepalette(hdc); rele

56、asedc(null, hdc); / return handle to the dib return hdib; bool cglobal:savedib(handle hdib, lpctstr lpfilename) bitmapfileheader bmfhdr; / header for bitmap file lpbitmapinfoheader lpbi; / pointer to dib info structure handle fh; / file handle for opened file dword dwdibsize; dword dwwritten; if (!h

57、dib) return false; 理學(xué)學(xué)士學(xué)位論文 第二章 分形相關(guān)理論問題 20 fh = createfile(lpfilename, generic_write, 0, null, create_always, file_attribute_normal | file_flag_sequential_scan, null); if (fh = invalid_handle_value) return false; / get a pointer to the dib memory, the first of which contains / a bitmapinfo structur

58、e lpbi = (lpbitmapinfoheader)globallock(hdib); if (!lpbi) closehandle(fh); return false; / check to see if were dealing with an os/2 dib. if so, dont / save it because our functions arent written to deal with these / dibs. if (lpbi-bisize != sizeof(bitmapinfoheader) globalunlock(hdib); closehandle(f

59、h); return false; / fill in the fields of the file header / fill in file type (first 2 bytes must be bm for a bitmap) bmfhdr.bftype = dib_header_marker; / bm dwdibsize = *(lpdword)lpbi + palettesize(lpbyte)lpbi); / now calculate the size of the image / its an rle bitmap, we cant calculate size, so t

60、rust the bisizeimage / field if (lpbi-bicompression = bi_rle8) | (lpbi-bicompression = bi_rle4) dwdibsize += lpbi-bisizeimage; 理學(xué)學(xué)士學(xué)位論文 第二章 分形相關(guān)理論問題 21 else dword dwbmbitssize; / size of bitmap bits only / its not rle, so size is width (dword aligned) * height dwbmbitssize = widthbytes(lpbi-biwidth)

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論