我正在学习如何制作Julia Set
分形。我以此作为参考。
我非常了解它背后的数学理论。我也可以手动计算。但是,我不明白它是如何在参考中提到的程序中完成的。
作者有一些确定zoom
位移的变量,并对其进行了一些计算。
有人可以解释一下它们是什么吗?
我正在学习如何制作Julia Set
分形。我以此作为参考。
我非常了解它背后的数学理论。我也可以手动计算。但是,我不明白它是如何在参考中提到的程序中完成的。
作者有一些确定zoom
位移的变量,并对其进行了一些计算。
有人可以解释一下它们是什么吗?
让我们看一下这一行(它下面的工作方式相同):
newRe = (x - w / 2) / (0.5 * zoom * w) + moveX;
(忽略缺乏1.5
因素,这只是为了确保它看起来不会“压扁”。)
它在一个循环中,在和之间for
分配值。[1]所以最左边和最右边的值将是:0
w
x
newRe
最左边:
newRe = (0 - w / 2) / (0.5 * zoom * w) + moveX;
= -(w / 2) / w / 0.5 / zoom + moveX;
= -(1 / 2) / 0.5 / zoom + moveX;
= -1 / zoom + moveX;
最右边:
newRe = (w - w / 2) / (0.5 * zoom * w) + moveX;
= (w / 2) / w / 0.5 / zoom + moveX;
= (1 / 2) / 0.5 / zoom + moveX;
= 1 / zoom + moveX;
它们的区别——即显示的 Julia 分形的实际矩形的宽度——等于:
(1 / zoom + moveX) - (-1 / zoom + moveX)
= (1 / zoom) - (-1 / zoom)
= 2 / zoom
(整个计算也适用于newIm
、h
和moveY
。)
这就是为什么增加缩放会导致我们正在检查的矩形缩小——这正是“放大”的含义。
[1] 它实际上只适用于w-1
,但是一个像素的差异使这个计算变得更加困难。