Представление температуры RGB цветом
От: Atos  
Дата: 30.12.03 13:40
Оценка:
Всем привет!
Кто-нибудь встречал алгоритм преобразования температуры к RGB цвету? Т.е чтобы визуализировать температуру к примеру в диапазоне от 20 до 120 градусов Цельсия, чтобы было что-то похожее на результат съемки инфракрасной камерой. Фактически нужна функция, получающая на вход значение температуры, а на выходе возвращающая значения трех цветов в диапазоне 0-255.
Re: Представление температуры RGB цветом
От: Amon-RA  
Дата: 30.12.03 13:43
Оценка:
Здравствуйте, Atos, Вы писали:

A>Всем привет!

A>Кто-нибудь встречал алгоритм преобразования температуры к RGB цвету? Т.е чтобы визуализировать температуру к примеру в диапазоне от 20 до 120 градусов Цельсия, чтобы было что-то похожее на результат съемки инфракрасной камерой. Фактически нужна функция, получающая на вход значение температуры, а на выходе возвращающая значения трех цветов в диапазоне 0-255.

представь, что минимальная температура — синий, максимальная — красный. И обыкновенное линейное преобразование
Re: Представление температуры RGB цветом
От: adontz Грузия http://adontz.wordpress.com/
Дата: 30.12.03 13:46
Оценка:
Здравствуйте, Atos, Вы писали:

Почему бы не взять за основу обычный спектр? То есть задать 7 точек в центре цветовых полос и потом интерполировать?
A journey of a thousand miles must begin with a single step © Lau Tsu
Re[2]: Представление температуры RGB цветом
От: adontz Грузия http://adontz.wordpress.com/
Дата: 30.12.03 15:22
Оценка: 1 (1)
Здравствуйте, adontz, Вы писали:

A>Почему бы не взять за основу обычный спектр? То есть задать 7 точек в центре цветовых полос и потом интерполировать?


Красный     - 255   0   0 
Орагжевый   - 255 127   0
Жёлтый      - 255 255   0
Зелёный     -   0 255   0
Голубой     -   0 255 255
Синий       -   0   0 255
Фиолетовый  - 255   0 255


Выкинем оранжевый как побочный продукт воображения Ньютона

Красный     - 255   0   0 
Жёлтый      - 255 255   0
Зелёный     -   0 255   0
Голубой     -   0 255 255
Синий       -   0   0 255
Фиолетовый  - 255   0 255


Симметрия данной картины вдохновляет.

Можно поигратся с размерами областей перехода цвета.

Вот короче код который рисует

for (int x = 0; x < 500; x++)
    {
        for (int y = 0; y < 100; y++)
            {
                int r  =   0;
                int g  =   0;
                int b  =   0;
                int i0 =   0;
                int i1 = 175;
                int i2 = 225;
                int i3 = 275;
                int i4 = 450;
                int i5 = 500;
                if ((x >= i0)&&(x < i1))
                    {
                        r =    255;
                        g = x*255/(i1- i0);
                        b =    0;
                    }
                if ((x >= i1)&&(x < i2))
                    {
                        r =    255 - ((x - i1)*255/(i2 - i1));
                        g = 255;
                        b =    0;
                    }
                if ((x >= i2)&&(x < i3))
                    {
                        r =    0;
                        g = 255;
                        b =    (x - i2)*255/(i3-i2);
                    }
                if ((x >= i3)&&(x < i4))
                    {
                        r =    0;
                        g = 255 - ((x - i3)*255/(i4-i3));
                        b =    255;
                    }
                if ((x >= i4)&&(x < i5))
                    {
                        r =    (x - i4)*255/(i5-i4);
                        g = 0;
                        b =    255;
                    }
                CDC.SetPixel(x, y, RGB(r, g, b));
            }
    }
A journey of a thousand miles must begin with a single step © Lau Tsu
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.