【问题标题】:Rendering Fractals: The Mobius Transformation and The Newtonian Basin渲染分形:莫比乌斯变换和牛顿盆地
【发布时间】:2014-11-12 06:04:04
【问题描述】:

我了解如何渲染(二维)“逃逸时间组”分形(Julia 和 Mandelbrot),但我似乎无法渲染莫比乌斯变换或牛顿盆地。

我正在尝试使用相同的方法来渲染它们(通过在每个像素“n”次上递归使用多项式方程),但我感觉这些分形是使用完全不同的方法渲染的。莫比乌斯“变换”意味着图像必须已经存在,然后被变换以产生几何图形,牛顿盆地似乎绘制了每个点,而不仅仅是落入集合的点。

这些分形是如何绘制的?它们是否使用与 Julia 和 Mandelbrot 相同的迭代方法绘制图形?

我正在使用的方程式:

Julia: Zn+1 = Zn^2 + C

其中 Z 是表示像素的复数,C 是复数常数(正确)。

Mandelbrot: Cn+1 = Cn^2 + Z

其中 Z 是表示像素的复数,C 是复数 (0, 0),每一步都复合(Julia 的反面,正确)。

Newton Basin: Zn+1 = Zn - (Zn^x - a) / (Zn^y - a)

其中 Z 是表示像素的复数,x 和 y 是不同度数的指数,a 是复数常数(不正确 - 创建一个居中的八足“线星”)。

Mobius Transformation: Zn+1 = (aZn + b) / (cZn + d)

其中 Z 是表示像素的复数,a、b、c 和 d 是复数常数(不正确,一切都在集合中)。

那么牛顿盆地和莫比乌斯变换是如何绘制在复平面上的呢?

更新:莫比乌斯变换就是这样;转变。

"Every Möbius transformation is
a composition of translations,
rotations, zooms (dilations) and
inversions."

要执行 Mobius 变换,形状、图片、涂抹等必须已经存在才能对其进行变换。

现在牛顿盆地怎么样?

更新 2:我对牛顿盆地的数学计算是错误的。等式末尾的分母是(假设是)原函数的导数。该功能可以通过研究 MIT MatLab 源代码中的“NewtonRoot.m”来理解。搜索引擎可以很容易地找到它。不过,我仍然不知道如何在复平面上绘制它......

牛顿盆地:

f(x) = x - f(x) / f'(x)

【问题讨论】:

    标签: graphics geometry fractals


    【解决方案1】:

    在 Mandelbrot 和 Julia 中,如果内循环超过某个阈值,则终止内循环作为轨道“到达”无穷大的速度

    if(|z| > 4) { stop }
    

    对于牛顿分形,情况正好相反:由于牛顿法通常会收敛到某个值,我们感兴趣的是它以多快的速度达到其极限,这可以通过检查两个连续值的差何时降至 a 以下来完成某个值(通常 10^-9 是一个不错的值)

    if(|z[n] - z[n-1]| < epsilon) { stop }
    

    【讨论】:

    • ...每个像素都是通过使用像素的向量分量创建一个新的复数来计算的,就像在 Mandelbrot 中一样?换句话说,它是否以相同的方式在复平面上逐个像素地渲染?
    • @MrMysterious2502 是的,完全正确。所以它实际上只是一个不同的公式,一个不同的边界条件和颜色,你可以使用最后一个角度。
    猜你喜欢
    • 2016-02-20
    • 1970-01-01
    • 1970-01-01
    • 2020-05-16
    • 1970-01-01
    • 1970-01-01
    • 2018-10-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多