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