【正文】
程序概況 本程序共分為以下四個主菜單: 1, 文件:主要是有關文件的操作。t we // fill in the biSizeImage field (this will fix any .BMP files which // have this field incorrect). lpBIbiSizeImage = dwBmBitsSize。 } // Check to see if we39。 // clean up GlobalUnlock(hDIB)。bi) + 。 // get a DC hDC = GetDC(NULL)。 else if (biBits = 4) biBits = 4。 DeleteDC(hMemDC)。 nY = lpRecttop。 // check for a valid bitmap handle if (!hBitmap) return NULL。 = lpRectright。 ○ 3 將位圖保存到磁盤,這個操作比較簡單,創(chuàng)建一個使用用戶輸入的文件名的文件,然后將圖形寫入文件即可。 ○ 3 如果 i1000, 對點 (x*20,y*20)著色,返回步驟 ○ 2 。為了使用二維元胞自動機繪圖,假定有一個 aa? 的網絡,其左上角的格子為( 0,0),右下角的格子為( a1,a1),這樣主要是為了對應計算機的屏幕坐 標 。39。已知 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? ? ? ?, min *tp p x p? ? ?, min *tq q y q? ? ? ,其中0,1, 2.. . 1txn??, 0,1, 2... 1tyn??,可以得出: minmin**p p x pq q y q? ? ?? ? ? 從而可得: 用計算機語言來描述就是: xMin = xMin + x* ol dP oint .x。運算在這里表示按位與運算符,它對運算符兩邊的數字的每一個位進行計算,如果兩個位都為 1 的話,那么運算結果就為 1,否則為 0。 red = k + m_nGreen。 ○ 5 對點 ( , )xynn 著色, 并轉至下一步,再頭從做步驟 ○ 2 。 當 0| | 1z ? 時,通過上面的計算,可以得知,此時 z 會趨向于 ? 。大小兩端都受到一定特征尺度的限制,中間有三個數量級的無標度區(qū)。這個詞意為不規(guī)則的,破碎的,分數的。分形已經廣泛應用于物理、化學、生物、醫(yī)學、計算機科學等諸多領域,而本文著眼于分形理論與計算機知識的結合。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, medicine, puter science etc. And this topic dedicate for the use of fractal theory in puter. 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 algorithm 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 puter graphics theory in the fractal picture39。 在某些電化學反應中,電極附近成績的固態(tài)物質,以不規(guī)則的樹枝形狀向外增長。一方面,分形理 論推動了計算機繪圖方法的迅速發(fā)展,使計算機在信息壓縮及模仿自然現象中的各種奇妙圖形發(fā)揮了重要的作用;另一方面,計算機的應用也大大地推動了分形理論的發(fā)展,并且由于模擬分形圖成功而展現出優(yōu)美的分形圖像,迅速提高了分形這門新興科學的聲望,擴大了她的影響。 Julia 集的逃逸時間算法如下: 假設繪圖窗口的寬度為 width,高度為 height。 ○ 6 讀完所有參數空間的點( p,q),結束循環(huán)。 if ((green amp。xM a x = xMi n + t m pDoubl e 。 繞坐標原點旋轉。又因為逃逸時間算法繪制 Julia 集和繪制 Mandelbrot 集的步驟都是一樣的,差別只體現在步驟 ○ 3 ,即由 ( , )nnxy 計算出 11( , )nnxy??這一步。 最后一個重要的影響因素是初始值 , 典型的初始值 X 和 Y 在 20和 20 之間 。然后需要確定當前客戶區(qū)域的大小,而這個可以使用函數 void GetClientRect( LPRECT lpRect ) const。 HANDLE hDib = (GetSafeHwnd(), NowRect)。 lpRectbottom = 。 // coordinates of rectangle to grab int nWidth, nHeight。 nWidth = nX2 nX。 // bits per pixel // check if bitmap handle is valid if (!hBitmap) return NULL。 = 0。 } // lock memory and get pointer to it lpbi = (LPBITMAPINFOHEADER)GlobalLock(hDIB)。 // 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)。 DWORD dwWritten。s an RLE bitmap, we can39。 // 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。 理學學士學位論文 第三章 畢業(yè)設計結果與分析 24 。bmfHdr,sizeof(BITMAPFILEHEADER), amp。 // BM dwDIBSize = *(LPDWORD)lpBI + PaletteSize((LPBYTE)lpBI)。 // Pointer to DIB info structure HANDLE fh。 return NULL。 ReleaseDC(NULL, hDC)。 = biBits。 // handle to DIB, temp handle HDC hDC。 if (nX2 xScrn) nX2 = xScrn。 // screen DC and memory DC HBITMAP hBitmap, hOldBitmap。 lpRecttop = 。 理學學士學位論文 第二章 分形 相關 理 論 問題 13 GetClientRect(amp。要將當前客戶區(qū)域拷貝為位圖,需要先獲取當前窗口的句柄,這個可以使用函數 HWND GetSafeHw nd( ) const。 他們使用了這組方程 : n+ 1 nn+ 1 n+ 1x = b * + f (x ) y = x + f (x ) ny 其中的函數 F(x)是他們所考慮的模型 , 其中一個主要的模型他們使用了 : f ( x) = a * + 2* ( 1 a ) * x* x/ ( 1+x* x) x 其中 a 是一個 參數 , 通常在 1 和 1 之間 , b 是一個非常敏感的常數 , 通常非常接近于 。圖形的矢量旋轉前后效果對比見圖 與圖 。 圖形的矢量放大前后效果對比見圖 與圖 。令 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 代表參數窗口值, oldPoint 表示鼠標移動前的位置, newPoint 表示鼠標移動后的位置。用計算機語言來表示就是這樣: if ((red amp。 如果 maxt Time? ,轉到步驟 ○ 5 。如圖 所示,假設有一個充分大的整數 N,當未逃逸區(qū)域 M 中的初始點 a 經過小于 N 次迭代就達到未逃逸區(qū)域 M 的邊界,甚至超出了邊界,我們就認為點 a 逃逸出去了;而如果經過 N 次迭代后, a 的軌跡仍未到達 M 的邊界,我們就認為 a 是 A 上的點,用這樣 的 方 法 描 繪 出 A 的 邊 界 圖 形 , 這 就 是 逃 逸 時 間 算 法 的 基 本 思 想 。并且由于分形幾何方法的引入,使一些原已死寂的老學科方向煥發(fā)了新的生機,也使一些正蓬勃發(fā)展的新學科獲得了巨大的推動力。這是一種處處連續(xù),但又處處無導數的曲線。另外,分形在其它學科的應用也日益廣泛,可見,分形在今后會得到更大的發(fā)展,有更廣闊的應用空間。本文重點介紹了分形圖形的重要生成算法 —— 逃逸時間算法,并且詳細說明了使用逃逸時間算法生成 Julia集與 Mandelbrot 集的算法過程。分形作為幾何對象,是破碎的,不規(guī)則的,但不是所有破碎的,不規(guī)則的形狀都是分形,分形一般還具有自相似性,一個對象的部分與整體有自仿射變換關系,我們也可以稱之為分形。 近幾年在流體力學不穩(wěn)定性、光學雙穩(wěn)定器件、化學震蕩反映等試驗中,都實際測得了混沌吸引子,并從實驗數據中計算出它們的分維。 于是,我們發(fā)現,復平面上可分為兩個區(qū)域,一個區(qū)域合落在其中的點向0 收斂 ,而另一個區(qū)域合落在其中的點向 ? 逃逸,它們的分界線便是 0| ( )| 1Fz? 。 Julia 集圖形:見圖 。 blue = k + m_nRed。這個算法主要是為了平滑分形圖形的色彩變化,讓圖形看起來更有美感。tm pD oub l e = y Min。 r r r39。 此網格共有 a/2 層,設 k 為層數,從 k=1 到 k=a/2,進行如下循環(huán): ○ 1 設第 k 層中任意點為 ( , )iixy ,則判斷其臨近 8 點的現有狀態(tài);如果 ( 1 , 1 ) ( , 1 ) ( 1 , 1 ) ( 1 , )( 1 , 1 ) ( , 1 ) ( 1 , 1 ) ( 1 , )i i i i i i i ii i i i i i iF x y F x y F x y F x yF x y F x y F x y F x y? ? ? ? ? ? ? ? ?? ? ? ? ? ? ? ?