【问题标题】:Julia Set fractal and location on screenJulia 在屏幕上设置分形和位置
【发布时间】:2013-06-12 07:00:03
【问题描述】:

我正在学习如何制作Julia Set 分形。我正在使用this as a reference

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

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

谁能解释一下它们是什么?

【问题讨论】:

    标签: image-processing language-agnostic fractals


    【解决方案1】:

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

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

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

    它位于for 循环中,将0w 之间的值分配给x[1] 所以最左边和最右边的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
    

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

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

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

    【讨论】:

    • 他基本上是将像素映射到笛卡尔坐标系,对吧?
    • 是的。 for循环中的xy值是像素坐标,使用这种方法映射到newRenewIm
    • moveXmoveY 就让我们在分形世界中漫步吧??
    • 没错!它们只是在“调整大小”为笛卡尔坐标后添加到 newRenewIm
    • 我现在开始明白了。如果需要帮助,我会在评论中提出疑问
    猜你喜欢
    • 1970-01-01
    • 2010-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-05
    • 2020-09-24
    相关资源
    最近更新 更多