масштабирование разных цветов в соответствии с тепловой картой

У меня есть набор разных цветов, выраженных в значениях с плавающей запятой RGB в единичном интервале, т.е. красный, например,

glColor4f(1.f, 0.f, 0.f, 1.f);

с четвертым значением, являющимся альфа-каналом.

Нет, я хотел бы настроить этот стиль цветовой карты, т. е. пиксели с базовым скалярным значением, близким к 1, выглядят более интенсивными, чем пиксели с базовым значением, близким к 0.

Я выбрал эту процедуру

  float red{ value <= 0.57147f ? 446.22f * value / 255.f : 1.f };
  float green{ value <= 0.95f ? ((value - 0.6f) * 728.57f) / 255.f : 1.f };
  float blue{ 0.f };

Теперь мой вопрос заключается в том, как я могу создать аналогичное распределение RGB для нескольких дискретных цветов, например. синий, фиолетовый, желтый и т. д.


person CD86    schedule 15.03.2018    source источник
comment
Вы можете вычислить значение яркости и использовать это значение для индексации текстуры палитры 1d, куда вы помещаете градации вашей тепловой карты. Здесь обсуждается инфракрасная палитра: -палитра   -  person Robinson    schedule 15.03.2018
comment
но это говорит о том, что соответствующий цвет определяет яркость. Но это наоборот. У меня есть предопределенный цвет, и я хочу настроить этот цвет (яркость и т. д.) в соответствии с некоторым скалярным значением в диапазоне от 0 до 1.   -  person CD86    schedule 15.03.2018
comment
Что вы подразумеваете под дискретным цветом? Почему их можно использовать в ваших общих формулах?   -  person Ripi2    schedule 15.03.2018
comment
У меня просто есть некоторые предопределенные цвета, например. красный (1.0, 0.0, 0.0), синий (0.0, 0.0, 1.0), и я хочу настроить яркость каждого из них по отдельности, т. е. поднять или опустить три поплавка каждого цвета, чтобы он казался темнее и светлее соответственно   -  person CD86    schedule 16.03.2018
comment
вы можете использовать/создать любой шаблон параметрического градиента, который вы хотите, или использовать что-то известное, например цвета видимого спектра или температура черного тела просто измените динамический диапазон вашего значения, чтобы он соответствовал диапазону ввода градиента....   -  person Spektre    schedule 16.03.2018