没有复数库的平滑着色Mandelbrot集

时间:2013-02-25 19:16:33

标签: complex-numbers mandelbrot

我用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)|的值? ?

1 个答案:

答案 0 :(得分:1)

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

如果遇到对数错误:请先检查迭代次数。如果它是Mandelbrot集的一部分(iteration = 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值。