Это алгоритм сглаживания цвета:
Допустим, вы начинаете с комплексного числа z0
и повторяете n
раз, пока оно не выйдет. Пусть конечная точка будет zn
.
гладкое значение будет
nsmooth := n + 1 - Math.log(Math.log(zn.abs()))/Math.log(2)
Это работает только для Мандельброта, если вы хотите вычислить гладкую функцию для множеств Джулии, тогда используйте
Complex z = new Complex(x,y);
double smoothcolor = Math.exp(-z.abs());
for(i=0;i<max_iter && z.abs() < 30;i++) {
z = f(z);
smoothcolor += Math.exp(-z.abs());
}
Тогда smoothcolor
находится в интервале (0,max_iter)
.
Разделите smoothcolor
на max_iter
, чтобы получить значение от 0 до 1.
Чтобы получить плавный цвет из значения:
Это можно вызвать, например (на Java):
Color.HSBtoRGB(0.95f + 10 * smoothcolor ,0.6f,1.0f);
, поскольку первое значение в цветовых параметрах HSB используется для определения цвета из цветового круга.