2013-02-25 27 views
0

我已經編寫了C#中的基本Mandelbrot資源管理器,但我有那些可怕的顏色帶,而且都是灰度。沒有複雜數字庫的平滑着色Mandelbrot集合

我有平滑着色等式: 畝= N + 1 - 日誌(日誌| Z(N)|)/日誌2

其中N是換碼數,並且| Z(N)|是數值轉義後複數的模數,這是我不確定的這個數值。

我的代碼是基於關閉維基百科頁面上給出的僞代碼:http://en.wikipedia.org/wiki/Mandelbrot_set#For_programmers

複數是由實值x和y所表示,使用這種方法,我將如何計算的值| Z( N)| ?

回答

1

| Z(N)|意味着到原點的距離,所以你可以通過sqrt(x*x + y*y)來計算它。

如果遇到對數錯誤:檢查之前的迭代。如果它是Mandelbrot集合的一部分(迭代= max_iteration),則第一個對數將導致0,第二個對數將引發錯誤。 因此,只需添加此代碼段而不是舊的返回碼。 。

 if (i < iterations) 
     { 
      return i + 1 - Math.Log(Math.Log(Math.Sqrt(x * x + y * y)))/Math.Log(2); 
     } 
     return i; 

後來,你應該除以我的max_iterations並乘以255.這會給你一個很好的rgb值。