2012-02-29 2 views

ответ

1

Предполагая, что зеленый положительный и красный отрицательный, как в большинстве красно-зеленых тепловых карт, найдите самое положительное значение среди положительных значений и разделите их на него, а затем найдите самое отрицательное значение среди отрицательных значений и разделите их на него , Умножьте коэффициенты для положительных значений на 255 для зеленого и сохраняя красный как 0, а отношения для отрицательных значений - 255 для красного и зеленые - как 0. Поэтому, когда значение равно 0, оно должно быть черным; когда значение самое положительное, оно полностью зеленое; когда значение самое отрицательное, оно полностью красное.

2

Выберите цвет RGB для «полного красного» (например, (255,0,0)) и для «полного зеленого» (например, 0,255,0)). Затем интерполируйте между ними, исходя из соотношения между вашим входным значением и максимально возможным значением.

Простейшая возможная интерполяция - linear interpolation в RGB colour space. Однако это может не дать очень удовлетворительного результата (в частности, яркость и насыщенность значений будут меняться). Лучшим подходом может быть преобразование в HSV colour space и интерполяция там.

+0

Можете ли вы привести мне пример? – Ant4res

+0

@ V4l3ri4: Пример того, что конкретно? –

+0

['PaintComponentTest'] (http://stackoverflow.com/a/7776211/230513) использует' Color.getHSBColor() '. Вы хотите охватить оттенки в диапазоне '[0..⅓]', а не '[0..1]'. – trashgod

2

Вы хотите отобразить диапазон значений в диапазоне оттенков в цветовом пространстве оттенка насыщенности/яркости, а затем перевести это в RGB.

Смежные вопросы