SetPixel。一、基本的繪制M集新方法(一)"/>
王乃謖
[關(guān) 鍵 詞] 繪制M集;編程;新方法
[中圖分類號] G718 [文獻標志碼] A [文章編號] 2096-0603(2018)24-0017-01
本文主要是利用計算機畫圖功能繪制曼德布洛特集合。利用的每個點在逃逸過程中所迭代的次數(shù),作為要用到的信息。也就是以此代表繪制的圖形中的圖像的顏色的深淺。顏色越深,代表它逃逸的越快,時間也就越短;反之,逃逸的慢,時間長,顏色淺。
本文主要利用VC++6.0的環(huán)境來編程;用到的主要函數(shù)是:畫圖:pDC->SetPixel。
一、基本的繪制M集新方法
(一)定義
先對復(fù)平面上的點進行循環(huán),由0開始迭代。如果這些點滿足條件的話(while((|Z|^2 (二)實現(xiàn) 增加了一個二維的數(shù)組在每次的運算過程中,來記錄它們的路過信息。也就是每一個復(fù)平面上的“擊中”次數(shù),也就是每次迭代一次,用于儲存信息的count數(shù)組便記錄一次,也就是Counter(Z)+=1。最后所有的統(tǒng)計信息都統(tǒng)計結(jié)束以后,根據(jù)這統(tǒng)計信息進行著色。 圖像是: 圖像基本特點:可以看到,越是外面,它被“擊中”的次數(shù)越多,說明它被經(jīng)過的概率也就越高。由于是記錄的每一個點所被“擊中”的次數(shù),所以在邊界處顯得有些模糊。顏色的深淺也代表了所“擊中”的次數(shù)。這個圖像的中心是一個有一個小口的圓形,在這個圓形的邊界處,說明它們被“擊中”的次數(shù)相同。但是,這個小圓里并不是對稱的,也說明了,里面的點的信息是不一樣的。其他方面,在這個小圓的周圍,是一些包裹橢圓形的小圓圈,都是不封口的,說明它們的“擊中”次數(shù)也是不一樣的。 二、擴展的繪制M集新方法 (一)定義 基本的M集:while((|Z|^2 擴展的M集:while((|Z|^N (二)實現(xiàn) 用Buddhabrot方法來繪制: 基本思想是:利用一個二維數(shù)組來計算,每個逃逸點經(jīng)過的每一點的次數(shù)。并根據(jù)每個點經(jīng)過的次數(shù)來進行描點。 當N取不同的值的時候,也會得到不同的圖像,這里顯示1個而已。 這些圖像具有以下特點:第一,它們?nèi)窃趥鹘y(tǒng)方法的基礎(chǔ)上得出來的,跟傳統(tǒng)方法得到的曼德布洛特集合的很相似。主要的區(qū)別就是,邊界沒有傳統(tǒng)的方法清晰,因為采用的新方法中,用到的是每一個點的“擊中”的信息,它使得得到的圖形更加的精確。第二,越往中間,顏色越深,說明它的“擊中”系數(shù)相對比較多,而兩邊卻恰恰相反。在他們的邊界處,它們在圖中顯示的顏色是一樣的,這就說明了在這些邊界的地方,被“擊中”的次數(shù)是一樣的。這些點在曼德布洛特集合上的性質(zhì)是一致的。 三、內(nèi)部點和外部點繪制M集新方法 (一)定義 在擴展的基礎(chǔ)上,先判定每個點是否是M集里面的點,還是不屬于M集。在判斷了以后,分別用M集的內(nèi)部點和外部點去分別再畫出新的M集。 (二)實現(xiàn) 首先是要有這么一個判斷:if(r>m)和if(k==K)為的就是說明該點是內(nèi)部點還是外部的,然后進行算法實現(xiàn)。 圖像如下: 圖像中主體的葫蘆形狀的顏色比較深,但是外面的顏色卻是黑色。這說明了在內(nèi)部點迭代的過程中,它們的主要路徑還是留在了內(nèi)部區(qū)域,而基本上沒有逃出過該區(qū)域,即使有很少的逃出過該區(qū)域內(nèi),也是在很短的時間或是迭代過程中,又回到了該區(qū)域內(nèi)部。 下面是外部點的新圖形。 這是外部點經(jīng)過迭代的圖像,由于計算量比較大,只是減少了迭代的次數(shù)來得到現(xiàn)在的圖像,所以顯示的顏色比較淡。從圖中的顏色深淺可以看得出來,外部點在迭代過程中大部分的點還是在外部進行迭代,但是不能排除一少部分的情況,會在迭代過程中在內(nèi)部區(qū)域進行。 通過以上,再來看新方法下繪制出的M集圖像。所有點下的圖像更像是最開始繪制出的基本圖像。說明即使是在新方法下M集的變化并沒有那么大。而且也說明了每個點在迭代過程中,還是在M集內(nèi)部經(jīng)過的次數(shù)比較多。在內(nèi)部點繪制的圖像下這個表現(xiàn)得更加明顯,基本上所有的內(nèi)部點的迭代過程都是在其內(nèi)部完成的。而外部點則顯現(xiàn)出了稍有不同的點,它的迭代過程大部分是在外部完成的。