2012-12-02 41 views
0

我已經在php中創建了mandelbrot,但mandelbrot看起來有點奇怪。我該如何改進它? enter image description hereMandelbrot壞圖像精確顏色循環?

你可以在這裏找到一個生動的例子:http://www.phpdevpad.de/index.php?id=190

更新:曼德爾布羅變焦與900次迭代:

enter image description here

更新:我使用計算天壤之別的這個方法:

double Re_factor = (MaxRe-MinRe)/(ImageWidth-1); 
double Im_factor = (MaxIm-MinIm)/(ImageHeight-1); 

double newMinRe = MinRe + (Re_factor* x1); 
double newMaxRe = MinRe + (Re_factor* x2); 
double newMinIm = MinIm + (Im_factor* y1); 
double newMaxIm = MinIm + (Im_factor* y2); 

// and then I compute c - real and c- imag values 

    for(unsigned y=0; y<ImageHeight; ++y) 
{ 
    double c_im = newMinIm - y*Im_factor; 
    for(unsigned x=0; x<ImageWidth; ++x) 
    { 
     double c_re = newMinRe + x*Re_factor; 

     // ComputeMandelbrot(); 

    } 

} 
  1. http://warp.povusers.org/Mandelbrot/
+1

你能發佈一個到源的鏈接嗎?或者在這裏包含相關的位? – ethrbunny

+0

@ethrbunny:完成。閱讀我的更新。 – Bytemain

+0

在Julia集教程中...連接的Julia集總是包含0 + 0i點。斷開的一個不包含該點。因此,通過針對K的不同值測試點0 + 0i,您可以創建連接的茱莉亞集的地圖。這張地圖是Julia集合的Mandelbrot集合。曼德爾布羅特通過繪製茱莉亞集合發現了這種形狀。 – phkahler

回答

1

1 )你需要增加e最大迭代次數。黑色區域太大。

2)你可以改變口味更有趣的東西。 「藍色」的突然變化很奇怪。

3)女人的默認圖片應該是更大....

+0

我有60次迭代。 – Bytemain

+0

嘗試300.然後嘗試1000.對於頂級視圖來說60是很好的,但是隨着放大變得更加必要。將迭代添加到放大圖片以比較低和高數量的迭代。 – phkahler

+0

對於深度縮放,您可能還需要擴展算術精度。 – lhf

1

我猜的幾件事情是怎麼回事:

  1. 作爲對分形前面提到的,60次迭代像這樣會讓你無處可去。試試6000.
  2. 您可能會遇到雙倍精度的限制。這最終會導致塊狀,並可能是不正確的渲染,尤其是當你縮放。您將需要一個確切的號碼類型。 PHP本身並不提供真實的確切數據類型,因此您必須除了與浮點數的本質有關的小的不一致之外,或者以整數或字節來做一些有趣的數學運算。
+0

大聲笑。它給了我最大的執行錯誤與PHP。我需要更好的優化。這是寫在JS中會更快? – Bytemain

+0

JS可能是一個更好的選擇 - 因爲處理將在客戶端進行,而不是在服務器上進行。 – mschultz

+0

是的。只是爲了好玩和學習。 – Bytemain