2012-12-02 42 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