0

我用 C# 编写了一个基本的 Mandelbrot 浏览器,但我有那些可怕的色带,而且都是灰度的。

我有平滑着色的方程:mu = N + 1 - log (log |Z(N)|) / log 2

其中 N 是转义计数,|Z(N)| 是值转义后复数的模数,这是我不确定的值。

我的代码基于维基百科页面上给出的伪代码:http ://en.wikipedia.org/wiki/Mandelbrot_set#For_programmers

复数由实数值 x 和 y 表示,使用这种方法,我将如何计算 |Z(N)| 的值 ?

4

1 回答 1

1

|Z(N)| 表示到原点的距离,因此您可以通过 计算它sqrt(x*x + y*y)

如果遇到对数错误:检查之前的迭代。如果它是 Mandelbrot 集的一部分(迭代 = max_iteration),则第一个对数将产生 0,第二个对数将引发错误。因此,只需添加此代码段而不是您的旧返回代码。.

        if (i < iterations)
        {
            return i + 1 - Math.Log(Math.Log(Math.Sqrt(x * x + y * y))) / Math.Log(2);
        }
        return i;

稍后,您应该将 i 除以 max_iterations 并将其乘以 255。这将为您提供一个不错的 rgb 值。

于 2013-04-27T16:00:32.477 回答