2011-04-16 78 views
4

我可以生成從minReal到maxReal和從minImaginary到maxImaginary的Mandelbrot集的400x400圖像。所以,如何放大mandelbrot集?

makeMandel(minReal, maxReal, minImaginary, maxImaginary); 

我需要修改它,這樣我可以有,

makeMandel(centerX, centerY, Zoomlevel); 
// generates a region of the mandelbrot set centered at centerX,centerY at a zoom level of Zoomlevel 

(考慮縮放水平表示像素之間的距離,並且由式變焦級別n = 2 ^(給定-n),所以縮放級別1意味着像素間隔0.5單位,縮放級別2,0.25等等......)

我的問題是如何計算第一個makeMandel函數的參數從第二個? 我知道第一個功能可以縮放和移動,但我不知道如何計算任何給定中心和縮放級別的正確數字。

我一直試圖讓這個工作超過三天,現在我很困惑。我嘗試在紙上繪製表格等等。 我在閱讀mandelbrot集合和幾個過去的stackoverflow問題時,閱讀了Google上找到的大多數文檔,但我仍然不明白。請幫助我。

+2

在這種情況下搜索Mandelbrot集合對您無能爲力,因爲您的問題也適用於很多領域。你只是在做*座標轉換時遇到問題,所以這是你應該研究的。 – 2011-04-16 12:48:20

回答

4

您可以通過以下方式解決。

sizeX = 2^(-zoomLevel) * baseSize 

同樣的公式保持y:如果你有兩個定義

centerX = (minReal + maxReal)/2 
sizeX = maxReal - minReal 

你可以計算出在軸延伸通過

minReal = centerX - sizeX/2 
maxReal = centerX + sizeX/2 

的大小,然後使用zoomLevel計算和虛軸。

sizeY = 2^(-zoomLevel) * baseSize 
minImaginary = centerY - sizeY/2 
maxImaginary = centerY + sizeY/2 

以限定爲恆定的唯一事情是你的baseSize,即,在實部和虛軸延伸時zoomLevel是零。您可以考慮實際和虛構方向上的不同baseSize以覆蓋圖像的非方形寬高比。

+0

所以對於一個正方形圖像,unitSize將是1?我很抱歉,我不明白爲什麼sizeX等於兩個不同的公式 – Alex 2011-04-16 12:25:40

+0

它不等於兩個不同的公式(第一個公式自動定義)。 baseSize只是一個縮放因子。如果您的實軸在zoomLevel = 0的情況下從-2到2(爲了覆蓋整個集合),您有sizeX = 4,因此baseSize = 4。 – Howard 2011-04-16 12:39:31