Преобразование сглаженных значений Мандельброта в массив int[] методом setRGB()

У меня есть список двойных значений в диапазоне от 0 до 1 в результате моего генератора Мандельброта. Это результирующие значения, полученные в результате использования алгоритма сглаживания для сглаживания значений.

Я сейчас рисую их на BufferedImage,, однако BufferedImage вызывает bi.setRGB(), что для моего примера выглядит так: bi.setRGB(0, 0, width, height, myPixel, 0, width);

Как вы можете сказать, myPixel — это массив int[].

Это мой фрагмент сглаживания Мандельброта:

double nsmooth = iter + 1 - Math.log(Math.log(Math.abs(_Z.getMag()))/Math.log(2))/Math.log(2);
myPixel[ myY * width + myX ] = (nsmooth / maxIterations);

Вторая строка выше — это значения в диапазоне от 0,0 до 1,0 (nsmooth / maxIterations), но поскольку myPixel[] — это массив целых чисел, мне нужно каким-то образом преобразовать их в целое число. Умножить их на коэффициент 10000+ не получилось.

Мой вопрос: что я могу сделать с моими двойниками от 0 до 1.0, чтобы преобразовать их в совместимый объект, который может принять setRGB?

Спасибо.

Попытка 2:

myPixel[ myY * width + myX ] = (int)(nsmooth / maxIterations * 500);

Похоже, я использовал только nsmooth, что привело к 0 в каждом отдельном значении. Теперь я привел всю строку и умножил ее на коэффициент 500. Выглядит немного лучше, но, возможно, мое значение должно быть больше:

введите здесь описание изображения


person theGreenCabbage    schedule 11.05.2014    source источник
comment
Ваша проблема в том, что вам не нравится динамический диапазон, который вы получаете - значения между 0,0..1,0 не отображаются в линейной форме?   -  person Jongware    schedule 12.05.2014
comment
Кажется, я полностью решил свою проблему.   -  person theGreenCabbage    schedule 12.05.2014


Ответы (1)


double nsmooth = iter + 1 - Math.log(Math.log(Math.abs(_Z.getMag()))/Math.log(2))/Math.log(2);

myPixel[ myY * width + myX ] = (int)(nsmooth / maxIterations * 500);

Похоже, проблема заключалась в том, что я преобразовал nsmooth (десятичное число от 0 до 1,0) в int, что всегда приводило к 0.

person theGreenCabbage    schedule 11.05.2014