【正文】
? ? ? 奇 數(shù) 則 ( , ) 1iiF x y ? 否則 ( , ) 0iiF x y ? 當(dāng)每一層中所有點(diǎn)判斷完結(jié)后,進(jìn)行下一步。 圖形參見:圖 。位圖的復(fù)制和剪切原理是相同的,它們不同點(diǎn)在于剪切的時(shí)候需要在將選定區(qū)域復(fù)制后將其重畫為白色區(qū)域。 ClientToScreen(hWnd, amp。 // convert the bitmap to a DIB hDIB = BitmapToDIB(hBitmap, hPalette)。 nY2 = lpRectbottom。 } 位圖格式轉(zhuǎn)換函數(shù): HDIB CGlobal::BitmapToDIB(HBITMAP hBitmap, HPALETTE hPal) { BITMAP bm。 else // if greater than 8bit, force to 24bit biBits = 24。 RealizePalette(hDC)。 else { 理學(xué)學(xué)士學(xué)位論文 第二章 分形 相關(guān) 理 論 問題 19 // clean up and return NULL GlobalFree(hDIB)。 RealizePalette(hDC)。t // save it because our functions aren39。 = 0。 ○ 2 保存 : 保存當(dāng)前圖片。 // oops, something happened in the write else return TRUE。 dwDIBSize += dwBmBitsSize。 if (!lpBI) { CloseHandle(fh)。 return NULL。 // if the driver did not fill in the biSizeImage field, make one up if ( == 0) = WIDTHBYTES((DWORD) * biBits) * 。 // calculate size of memory block required to store BITMAPINFO dwLen = + PaletteSize((LPBYTE)amp。 // calculate bits per pixel 理學(xué)學(xué)士學(xué)位論文 第二章 分形 相關(guān) 理 論 問題 17 biBits = * 。 // select old bitmap back into memory DC and get handle to // bitmap of the screen hBitmap = (HBITMAP)SelectObject(hMemDC, hOldBitmap)。 hMemDC = CreateCompatibleDC(hScrDC)。 // handle to palette HDIB hDIB = NULL。 // convert client coords to screen coords = lpRectleft??梢赃_(dá)到要求。y = w z 。 算法的效果圖參見圖 。39。 圖形矢量移動(dòng)前后效果對(duì)比參見圖 與圖 。 red, green,blue 與 0x1FF 進(jìn)行 amp。 我們對(duì)分形圖形進(jìn)行著色也使用這種色彩模型。 如果 rM? ,且 maxt Time? ,則轉(zhuǎn)至步驟 ○ 3 。先考慮 C=0 的情況, Z 是復(fù)數(shù),即 Z=x+yi,則有: 2 2 2 2 2 2( ) ( ) 2 ( ) 2z z z x y i x y i x y i x y i x y x y i? ? ? ? ? ? ? ? ? ? ? ? 我們還可以定義復(fù)數(shù) z=x+yi 的絕對(duì)值,即: 22||z x y??,而 |Z|恰好相反是從原點(diǎn)到 Z 的距離。 有人研究了某些云彩邊界的幾何性質(zhì),發(fā)現(xiàn)存在從 1 公里到 1000 公里的無標(biāo)度區(qū)。也就是說,在分形中,每一組成部分都在特征上和整體相似,只僅僅是變小了一些而已??梢院唵蔚卣f,如果一個(gè)對(duì)象的部分與整體具有自仿射變換關(guān)系,我們就可以 稱它為分形。 嚴(yán)格地而且正式地去定義分形是一件非常復(fù)雜而且困難的事情。 自然界中更大的尺度上也存在分形對(duì)象。并且分形圖形已經(jīng)開始應(yīng)用在包裝,服裝,陶瓷裝飾上面。對(duì)所有的點(diǎn)( , ) , 0 , 1 , 2 , 3. .. 1 0 , 1 , 2 , 3. .. 1x y x yn n n w idth n he ight? ? ? ?及,完成如下步驟的循環(huán): ○ 2 令 0 min *xx x n x? ? ?,0 m in *yy y n y? ? ?, t=0。 分形圖形著色方案 RGB 色彩模式是工業(yè)界的一種顏色標(biāo)準(zhǔn),是通過對(duì)紅 (R)、綠 (G)、藍(lán) (B)三個(gè)顏色通道的變化以及它們相互之間的疊加來得到各式各樣的顏色的, RGB 即是代表紅、綠、藍(lán)三個(gè)通道的顏色,這個(gè)標(biāo)準(zhǔn)幾乎包括了人類視力所能感知的所有顏色,是目前運(yùn)用最廣的顏色系統(tǒng)之一。 if ((blue amp。y Mi n = y Mi n y * ( ne wP oi nt .y ol dP oi nt .y ) 。將其寫成矩陣形式如下: 39。 ○ B 理學(xué)學(xué)士學(xué)位論文 第二章 分形 相關(guān) 理 論 問題 10 00t 3 = t 1 * t 1 t 2 * t 2 + x 0 .7t 4 = 2 * t 1 * t 2 + yt 1 = t 3t 2 = t 4 計(jì)數(shù) i=i+1。 ○ 2 進(jìn)行 計(jì)算: z = x 。為了拷貝客戶區(qū)的圖形到內(nèi)存,我寫了一個(gè)函數(shù) CopyClientRectToDIB(HWND hander,CRect rect),其中的 hander為當(dāng)前窗口的句柄, rect 表示客戶區(qū)域的大小。 } } 拷貝客戶區(qū)函數(shù): HDIB CGlobal::CopyClientRectToDIB(HWND hWnd, LPRECT lpRect) { HDIB hDIB = NULL。 // return the handle to the DIB return hDIB。 // screen resolution // check for an empty rectangle 理學(xué)學(xué)士學(xué)位論文 第二章 分形 相關(guān) 理 論 問題 15 //MessageBox((HWND)AfxGetApp()GetMainWnd(),122,123,NULL)。 // create a bitmap patible with the screen DC hBitmap = CreateCompatibleBitmap(hScrDC, nWidth, nHeight)。t work if (!GetObject(hBitmap, sizeof(bm), (LPBYTE)amp。 = 0。 // call GetDIBits with a NULL lpBits param, so it will calculate the // biSizeImage field for us GetDIBits(hDC, hBitmap, 0, (UINT), NULL, (LPBITMAPINFO)lpbi, DIB_RGB_COLORS)。 SelectPalette(hDC, hPal, TRUE)。 fh = CreateFile(lpFileName, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL | FILE_FLAG_SEQUENTIAL_SCAN, NULL)。 else { DWORD dwBmBitsSize。 GlobalUnlock(hDib)。 子菜單: ○ 1 Julia 集:查看 Julia 集圖。s the Bitmap file header plus the DIB header, // plus the size of the color table. = (DWORD)sizeof(BITMAPFILEHEADER) + lpBIbiSize +PaletteSize((LPBYTE)lpBI)。 return FALSE。 } bool CGlobal::SaveDIB(HANDLE hDib, LPCTSTR lpFileName) { BITMAPFILEHEADER bmfHdr。 RealizePalette(hDC)。t get memory block if (!hDIB) { // clean up and return NULL SelectPalette(hDC, hPal, TRUE)。 = 。 // pointer to BITMAPINFOHEADER DWORD dwLen。 //make sure bitmap rectangle is visible if (nX 0) nX = 0。 // return handle to the packedDIB return hDIB。pt2)。 附相關(guān)代碼如下: 圖片保存函數(shù): void CFractalView::OnFileSave() { CFileDialog dlg(TRUE, NULL, *.bmp,OFN_HIDEREADONLY ,Bmp Files(*.bmp)|*.bmp)。然后使用類成員函數(shù) GetFileName()就可以獲得用戶輸入的文件名。 圖形參見:圖 。 2211 2t t tt t tx x y py x y q??????? 這里只需要修改 ,xynn的值,所以可得: xx x yyte m p = nn = w idth /2 + ( n w idth /2) * c o s ( n h e igh t/ 2 ) * sinn = h e igh t/ 2 + ( te m p w idth /2) * sin + ( n y h e igh t/ 2 ) * c o s???? 再將獲得的 ,xynn,進(jìn)行 m in *txx x n x? ? ?, m in *tyy y n y? ? ?的運(yùn)算,得到新的,ttxy。???? 這樣我們只要將得到的 (xMin,yMin), (xMax,yMax)代替原來的參數(shù)窗口值就可以實(shí)現(xiàn)對(duì)窗口的放大 了。如果要對(duì)窗口中的圖形進(jìn)行移動(dòng),我們可以選擇使用移動(dòng)參數(shù)窗口的方法來實(shí)現(xiàn)。如果 R,G,B 中的任何一個(gè)值大于0xFF,就對(duì)其進(jìn)行 ^0xFF 的位運(yùn)算。 ○ 2 令 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? ? ? ? ○ 3 利用下式從 ( , )kkxy 得到 11( , )kkxy??,計(jì)數(shù) k=k+1 2211 2k k kk k kx x y py x y q??????? ○ 4 計(jì)算 22ttr x y??: 如果 rM? ,則轉(zhuǎn)到步驟 ○ 5 。 Julia 集圖形:見圖 。 本文選題的背景 分形幾何,這門新的數(shù)學(xué)分支一創(chuàng)立,就日益受到各國學(xué)者的重視,在過去的十幾年里,分形科學(xué)已有了很大的發(fā)展。布朗粒子的軌跡,由各種尺寸的折線連成。本文還涉及了元胞機(jī)自動(dòng)圖案的生成以及GumowskiMira 分形,生成了經(jīng)典的三翅鷹圖形,并且實(shí)現(xiàn)了對(duì)其色彩的編輯功能。本文還詳細(xì)說明了分形圖形在計(jì)算機(jī)圖形學(xué)相關(guān)理論上的應(yīng)用,比如分形圖形的矢量移動(dòng),旋轉(zhuǎn),縮放,以及對(duì)分形圖形進(jìn)行相關(guān)特殊變換,此外,還可修改圖