0

我正在学习如何制作Julia Set分形。我以此作为参考

我非常了解它背后的数学理论。我也可以手动计算。但是,我不明白它是如何在参考中提到的程序中完成的。

作者有一些确定zoom位移的变量,并对其进行了一些计算。

有人可以解释一下它们是什么吗?

4

1 回答 1

1

让我们看一下这一行(它下面的工作方式相同):

newRe = (x - w / 2) / (0.5 * zoom * w) + moveX;

(忽略缺乏1.5因素,这只是为了确保它看起来不会“压扁”。)

它在一个循环中,在和之间for分配值。[1]所以最左边和最右边的值将是:0wxnewRe

  • 最左边:

    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

(整个计算也适用于newImhmoveY。)

这就是为什么增加缩放会导致我们正在检查的矩形缩小——这正是“放大”的含义。

[1] 它实际上只适用于w-1,但是一个像素的差异使这个计算变得更加困难。

于 2013-06-12T07:21:35.563 回答