【正文】
h e igh t? ? ? ? 逃逸區(qū) M’ 收斂區(qū)域 A 未逃逸區(qū) M 逃逸邊界 理學學士學位論文 第二章 分形 相關 理 論 問題 5 其中 C 表示復數(shù)上一個點, minx , maxx , miny , maxy 表示參數(shù)窗口大小, M 表示逃逸邊界值, maxTime 表示循環(huán)可以執(zhí)行的最大次數(shù)。 于是,我們發(fā)現(xiàn),復平面上可分為兩個區(qū)域,一個區(qū)域合落在其中的點向0 收斂 ,而另一個區(qū)域合落在其中的點向 ? 逃逸,它們的分界線便是 0| ( )| 1Fz? 。目前用計算機繪制分形圖是如此流行,以致不僅使繪制分形的算法理論與程序設計已成為一個獨立的研究方向,同時繪制的分形圖也已成了一種相當時髦的藝術形式。 近幾年在流體力學不穩(wěn)定性、光學雙穩(wěn)定器件、化學震蕩反映等試驗中,都實際測得了混沌吸引子,并從實驗數(shù)據(jù)中計算出它們的分維。受到污染的一些流水中,粘在藻類植物上的顆粒和膠狀物,不斷因新的沉積而生長,成為帶有許多須須毛毛的枝條狀,就可以用分維。分形作為幾何對象,是破碎的,不規(guī)則的,但不是所有破碎的,不規(guī)則的形狀都是分形,分形一般還具有自相似性,一個對象的部分與整體有自仿射變換關系,我們也可以稱之為分形。s 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 GumowskiMira fractal, two dimension Cellular Automata fractal. Fractal unfurl 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 puter science. The puter 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 理學學士學位論文 第一章 分形概論 1 第一章 分形概論 什么是分形 什么是分形呢?很難給分形下一個確切的定義。本文重點介紹了分形圖形的重要生成算法 —— 逃逸時間算法,并且詳細說明了使用逃逸時間算法生成 Julia集與 Mandelbrot 集的算法過程。自分形之父曼德勃羅( Benoit Mandelbrot)在 1975年出版專著《分形對象:形、機遇與維數(shù)》,標志著分形理論正式誕生以來。另外,分形在其它學科的應用也日益廣泛,可見,分形在今后會得到更大的發(fā)展,有更廣闊的應用空間。 分形在英文中為 fractal,是由美籍法國數(shù)學家曼德勃羅 (Benoit Mandelbrot)創(chuàng)造出來的。這是一種處處連續(xù),但又處處無導數(shù)的曲線。小于 1 公里的云朵,更受地形概貌影響,大于 1000 公里時,地球曲率開始起作用。并且由于分形幾何方法的引入,使一些原已死寂的老學科方向煥發(fā)了新的生機,也使一些正蓬勃發(fā)展的新學科獲得了巨大的推動力。 下面討論 2()f z z? 的一些性質(zhì),假設此方程以點 0 0 0z x y i?? ,且 0| | 1z? 開始迭代,則有: 220 0 0 0 0| ( ) | | 2 |F z x y x y? ? ? 2 2 2 20 0 0 0( ) ( 2 )x y x y? ? ? 4 4 2 2 2 20 0 0 0 0 024x y x y x y? ? ? ? 2 2 200()xy?? 因此,在區(qū)域 00 | | 1z??中, 00| ( ) | | |F z z? ,這意味著對 2()F z z? 的每一個一次迭代,即 21nnzz? ? ,都會使 z 向靠 0 的方向移動,可以說此時 z 向 0 收斂。如圖 所示,假設有一個充分大的整數(shù) N,當未逃逸區(qū)域 M 中的初始點 a 經(jīng)過小于 N 次迭代就達到未逃逸區(qū)域 M 的邊界,甚至超出了邊界,我們就認為點 a 逃逸出去了;而如果經(jīng)過 N 次迭代后, a 的軌跡仍未到達 M 的邊界,我們就認為 a 是 A 上的點,用這樣 的 方 法 描 繪 出 A 的 邊 界 圖 形 , 這 就 是 逃 逸 時 間 算 法 的 基 本 思 想 。 如果 maxt Time? ,轉到步驟 ○ 5 。 如果 maxt Time? ,轉到步驟 ○ 5 。 顏色設置:我們根據(jù)逃逸時間算法的循環(huán)次數(shù)來給分形圖著色,假定 k 為循環(huán)次數(shù),也就是上面所說的逃逸時間, time 為顏色銳化值, m_nRed, m_nGreen,m_nBlue 為 R, G, B 的初始值,有如下結果: k *= time。用計算機語言來表示就是這樣: if ((red amp。運算表示取這三個值的最低九個位, amp。令 m a x m i n( ) /( 1 )x x x w id th? ? ? ?, m a x m in( ) /( 1 )y y y h e igh t? ? ? ?,xMin, yMin, xMax, yMax 代表參數(shù)窗口值, oldPoint 表示鼠標移動前的位置, newPoint 表示鼠標移動后的位置。 2, Julia 集與 Mandelbrot 集的矢量放大 :先說明對 Mandelbrot 集的放理學學士學位論文 第二章 分形 相關 理 論 問題 8 大 ,Mandelbrot 集是將參數(shù) C 走遍參數(shù)窗口的所有值,經(jīng)過逃逸時間算法的運算最終在繪圖窗口中畫出圖來,由此可知,參數(shù)窗口的大小和位置就決定了所繪 Mandelbrot 集的放大區(qū)域。 圖形的矢量放大前后效果對比見圖 與圖 。m in m in m inm a x m a x m a x39。圖形的矢量旋轉前后效果對比見圖 與圖 。 二維元胞自動機生成分形圖案 元胞 分布在二維歐氏幾何平面上規(guī)則劃分的網(wǎng)格點上,則稱它為二維元胞自動機。 他們使用了這組方程 : n+ 1 nn+ 1 n+ 1x = b * + f (x ) y = x + f (x ) ny 其中的函數(shù) F(x)是他們所考慮的模型 , 其中一個主要的模型他們使用了 : f ( x) = a * + 2* ( 1 a ) * x* x/ ( 1+x* x) x 其中 a 是一個 參數(shù) , 通常在 1 和 1 之間 , b 是一個非常敏感的常數(shù) , 通常非常接近于 。i = i + 1。要將當前客戶區(qū)域拷貝為位圖,需要先獲取當前窗口的句柄,這個可以使用函數(shù) HWND GetSafeHw nd( ) const。最后將指向位圖的句柄返回。 理學學士學位論文 第二章 分形 相關 理 論 問題 13 GetClientRect(amp。 = lpRecttop。 lpRecttop = 。 // handle to DIB // get the devicedependent bitmap in lpRect by calling // CopyScreenToBitmap and passing it the rectangle to grab hBitmap = CopyScreenToBitmap(lpRect)。 // screen DC and memory DC HBITMAP hBitmap, hOldBitmap。 // get points of rectangle to grab nX = lpRectleft。 if (nX2 xScrn) nX2 = xScrn。 // clean up DeleteDC(hScrDC)。 // handle to DIB, temp handle HDC hDC。 // make sure bits per pixel is valid if (biBits = 1) biBits = 1。 = biBits。bi)。 ReleaseDC(NULL, hDC)。 // realloc the buffer big enough to hold all the bits dwLen = + PaletteSize((LPBYTE)amp。 return NULL。 } bi = *lpbi。 // Pointer to DIB info structure HANDLE fh。 return FALSE。 // BM dwDIBSize = *(LPDWORD)lpBI + PaletteSize((LPBYTE)lpBI)。 // Now, since we have calculated the correct size, why don39。bmfHdr,sizeof(BITMAPFILEHEADER), amp。 // Success code } 理學學士學位論文 第三章 畢業(yè)設計結果與分析 23 第三章 畢業(yè)設計結果和分析 給出畢業(yè)設計的結果圖,并給出適當?shù)姆治?,指出其?yōu)勢和不足之處。 理學學士學位論文 第三章 畢業(yè)設計結果與分析 24 。 子菜單: ○ 1 新建:新建一個視圖。 // Write the DIB header and the bits use local version of // MyWrite, so we can write more than 32767 bytes of data WriteFile(fh, (LPBYTE)lpBI, dwDIBSize, amp。 } // Calculate the file size by adding the DIB size to sizeof(BITMAPFILEHEADER) = dwDIBSize + sizeof(BITMAPFILEHEADER)。s an RLE bitmap, we can39。re dealing with an OS/2 DIB. If so, don39。 DWORD dwWritten。 SelectPalette(hDC, hPal, TRUE)。 // call GetDIBits with a NONNULL lpBits param, and actualy get the // bits this time if (GetDIBits(hDC, hBitmap, 0, (UINT), (LPBYTE)lpbi + (WORD)lpbibiSize + PaletteSize((LPBYTE)lpbi), (LPBITMAPINFO)lpbi, DIB_RGB_COLORS) == 0) { // clean up and return NULL GlobalUnlock(hDIB)。 if (h = GlobalReAlloc(hDIB, dwLen, 0)) hDIB = h。 } // lock memory and get pointer to it