Это для рендеринга набора Мандельброта (см. https://en.wikipedia.org/wiki/Mandelbrot_set); цвет каждой точки должен основываться на количестве итераций, которые потребовались комплексному числу Z, чтобы выйти из набора.
Я хотел бы сопоставить цвета так, чтобы, если точка является элементом набора Мандельброта, она должна быть чисто красной [RGB (255, 0, 0), 0% по спектру от ИК до УФ].
Если расчет был остановлен из-за того, что цикл достиг предела итераций, цвет должен быть чисто фиолетовым [RGB (249, 192, 255), 100% по спектру].
Я предполагаю, что решение включает в себя что-то вроде:
//where iterCount is the value for that point, maxIters is the iteration cap
double spectrumValue=iterCount/maxIters; //percent in decimal form
setColor(RGBConversion(spectrumValue));
Однако то, что я не знаю, - это метод RGBConversion. В идеале он должен работать в постоянное время.
if
оператор, проверяющий, равно лиiterCount
maxIters
, не дает вам возможность указать два разных цвета? - person Kenney   schedule 20.11.2015array[maxiters]
. Мой метод заключался в том, чтобы создатьarray[256]
градуированных цветов, которые плавно переходят при индексировании какarray[iterations % 256]
. Но также учтите, что итерации рядом с M-Set довольно хаотичны, ваш одноцветный градиент, вероятно, будет выглядеть лучше, чем мой метод, где я заставил соседние пиксели, имеющие очень разные итерации, быть средне-серыми (сам M-Set черный). - person Weather Vane   schedule 20.11.2015array[0]
, цвета повторяются каждые 256 итераций. Я погас синий - ›зеленый (без красного), затем зеленый -› красный (без синего), а затем красный - ›синий (без зеленого) в массиве 256, на самом деле 255, я думаю (3 * 85). - person Weather Vane   schedule 20.11.2015