渲染分形:莫比乌斯变换和牛顿盆地

时间:2014-11-12 06:04:04

标签: graphics geometry fractals

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

我正在尝试使用相同的方法渲染它们(通过在每个像素'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是复数常量(不正确,一切都落在集合中)。

那么Newton Basin和Mobius Transformation如何在复平面上绘制?

更新:Mobius Transformations就是这样;转换。

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

要执行Mobius变换,必须已经存在形状,图片,拖影等,以便对其进行转换。

现在Newton Basins怎么样?

更新2:我对牛顿盆地的数学错误。等式末尾的分母(应该是)原始函数的导数。通过从MIT MatLab源代码学习'NewtonRoot.m'可以理解该功能。搜索引擎可以很容易地找到它。我仍然不知道如何在复杂的平面上绘制图形,但是......

牛顿盆地:

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

1 个答案:

答案 0 :(得分:2)

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

if(|z| > 4) { stop }

对于牛顿分形,它是另一种方式:由于牛顿方法通常收敛到某个值,我们感兴趣的是它达到极限的速度有多快,这可以通过检查两个连续值的差异何时下降到a以下来完成。某个值(通常10 ^ -9是一个很好的值)

if(|z[n] - z[n-1]| < epsilon) { stop }
相关问题