Визуализация карты температуры без использования значений диапазона - PullRequest
0 голосов
/ 09 января 2011

Я хотел бы визуализировать карту, такую ​​как: alt text

с другим цветом, а не только с градиентами, с картой, имеющей значение температуры 0 ... 1, без использования значений диапазона,это если t = 0 ... 0,2 использовать красный * t, если t> 0,2 и t <0,4 использовать оранжевый * t и т. д. </p>

Любой совет?

РЕДАКТИРОВАТЬ: пример кодаиз «диапазонов»:

    else if (layerType == "temperature") {

     if (value <= 0.2) {
        r = Math.round(value * 200)+100;
        g = Math.round(value * 200)+100;
        b = Math.round(value * 250)+150;
        a = 1;
    } else if (value > 0.2 && value <= 1) {
        r = Math.round(value * 250);
        g = Math.round(value * 250);
        b = Math.round(value * 200);
        a = 1;
    }

1 Ответ

4 голосов
/ 09 января 2011

Вы можете отобразить температуру на цвета, используя плавные непрерывные функции с цветовым пространством HSB (оттенок, насыщенность и яркость).

Оттенок отображает спектр видимых цветов следующим образом: hue scale

(http://en.wikipedia.org/wiki/File:HueScale.svg)

В вашем примере изображения выглядит так, что насыщенность и яркость могут быть постоянными, поэтому ваша функция может просто перевести температуру в оттенок:

hue = f(t)

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

Для обсуждения того, как преобразовать HSB в цветовое пространство RGB, посмотрите, например, ответ, принятый на эту тему StackOverflow: Алгоритм генерации уникальных цветов

Для общего обсуждения оттенка см., Например, эту статью в Википедии: http://en.wikipedia.org/wiki/Hue

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...