最近我对分形、背后的数学和它们能产生的视觉效果很感兴趣。
但我真的不知道如何将数学公式映射到绘制图片的代码中。
给定曼德博集合的这个公式:Pc(z) = z * z + c
它与以下代码有何区别:
$outer_adder = ($MaxIm - $MinIm) / $Lines;
$inner_adder = ($MaxRe - $MinRe) / $Cols;
for($Im = $MinIm; $Im <= $MaxIm; $Im += $outer_adder)
{
$x=0;
for($Re = $MinRe; $Re <= $MaxRe; $Re += $inner_adder)
{
$zr = $Re;
$zi = $Im;
for($n = 0; $n < $MaxIter; ++$n)
{
$a = $zr * $zr;
$b = $zi * $zi;
if($a + $b > 2) break;
$zi = 2 * $zr * $zi + $Im;
$zr = $a - $b + $Re;
}
$n = ($n >= $MaxIter ? $MaxIter - 1 : $n);
ImageFilledRectangle($img, $x, $y, $x, $y, $c[$n]);
++$x;
}
++$y;
}
代码并不完整,仅展示了主要迭代部分以简洁为目的。
所以问题是:有人能解释一下数学与代码的比较吗?
编辑:明确一下,我找到了很多关于数学的资源和很多展示代码的资源,但是没有地方可以找到两者结合的好解释。