【问题标题】:Mandelbrot bad image precision color cycle?Mandelbrot 图像精度差颜色周期?
【发布时间】:2012-12-04 21:13:52
【问题描述】:

我在 php 中创建了一个 mandelbrot,但 mandelbrot 看起来有点奇怪。我该如何改进它?

你可以在这里找到一个活生生的例子:http://www.phpdevpad.de/index.php?id=190

更新:900 次迭代的 Mandelbrot-Zoom:

更新:我使用这种计算曼德布洛特的方法:

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/

【问题讨论】:

  • 你能贴出源链接吗?或者在此处包含相关位?
  • @ethrbunny:完成。阅读我的更新。
  • 在 Julia 集的教程中... 一个连通的 Julia 集总是包含点 0+0i。断开连接的不包含该点。因此,通过针对不同的 K 值测试点 0+0i,您可以创建连接的 julia 集的映射。这张地图是那个 Julia 集家族的 Mandelbrot 集。 Mandelbrot 通过映射 julia 集发现了这个形状。

标签: php math mandelbrot


【解决方案1】:

1) 你需要增加最大迭代次数。黑色区域太大。

2) 您可以将味觉更改为更有趣的东西。突然变成“蓝色”很奇怪。

3) 女性的默认图片应该更大并且....

【讨论】:

  • 尝试 300。然后尝试 1000。60 对于顶级视图来说很好,但是当您放大时,就需要更多。向放大的图片添加迭代以比较低和高迭代次数。
  • 对于深度缩放,您可能还需要扩展算术精度。
【解决方案2】:

我猜有些事情正在发生:

  1. 如前所述,对这样的分形进行 60 次迭代将无济于事。试试 6000。
  2. 您可能会遇到双精度的限制。这最终会导致出现块状且可能不正确的渲染,尤其是在缩放时。您将需要一个确切的数字类型。 PHP 本身并不提供真正精确的数据类型,因此您必须要么除了与浮点数性质相关的轻微不一致外,要么自己做一些有趣的整数或字节数学运算。

【讨论】:

  • 哈哈。它给了我最大的 php 执行错误。我需要一些更好的优化。用JS写这个会更快吗?
  • JS 可能是更好的选择 - 因为处理将在客户端进行,而不是在您的服务器上。
  • 在这种情况下,这可能无关紧要。看来您已经实现了渲染它的目标,我建议您考虑渲染一个 Julia 集?
  • 是的。类似的东西。或者来自维基百科网站(mandelbrot)的优化。没看懂。
猜你喜欢
  • 1970-01-01
  • 2022-11-30
  • 1970-01-01
  • 1970-01-01
  • 2011-08-19
  • 2017-09-19
  • 2019-05-08
  • 2013-05-08
  • 2020-01-27
相关资源
最近更新 更多