Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Вещественное число в цвет RGB.

279
22 июня 2006 года
bave
456 / / 07.03.2004
Вообщем есть матрица каждый элемент которой число - короткое с плавающей точкой(4 байта) - мне это число нужно пересчитать в RGB цвет, причём так чтобы цвет получался одного оттенка (любого), т. е. чем меньше значения вещественного числа тем темнее, чем больше тем светлее...
--------------------------------------------------------------------------
Если просто скопировать значения байтов вещественого, числа в байты каналов RGB цвета начиная с младших, то ничего
хорошего не получится, дело в том, что у вещ. числа и целая часть и дробная меняются в широких пределах - поэтому
мантиса и характеристика числа меняются как попало - поэтому если просто копировать, получается разноцветная пакость какая-то...
247
22 июня 2006 года
wanja
1.2K / / 03.02.2003
А обязательно вещественное? Откуда ты ее берешь?
273
22 июня 2006 года
3A3-968M
1.2K / / 22.12.2005
[quote=bave]Вообщем есть матрица каждый элемент которой число - короткое с плавающей точкой(4 байта) - мне это число нужно пересчитать в RGB цвет, причём так чтобы цвет получался одного оттенка (любого), т. е. чем меньше значения вещественного числа тем темнее, чем больше тем светлее...
--------------------------------------------------------------------------
Если просто скопировать значения байтов вещественого, числа в байты каналов RGB цвета начиная с младших, то ничего
хорошего не получится, дело в том, что у вещ. числа и целая часть и дробная меняются в широких пределах - поэтому
мантиса и характеристика числа меняются как попало - поэтому если просто копировать, получается разноцветная пакость какая-то...[/quote]
ГЫ! Так у тебя диапазон вещественного числа формат RGB перекрывает в несколько раз (на RGB 24 бита, а на вещ. одинарной точности - 32 бита). Поэтому значение, переведённое в RGB будет сильно сказываться на изменении цветов. Выделяй только целую часть от вещественного. А можно ещё так:
RGB = Float mod (2^32)-1;
Т.е. взять вещественное число по модулю (2^32)-1.
279
22 июня 2006 года
bave
456 / / 07.03.2004
я уже всё сделал.
-------------------------------------
Дело не в том, что перекрывает...
534
22 июня 2006 года
HarryAxe
448 / / 19.01.2006
[QUOTE=bave]Вообщем есть матрица каждый элемент которой число - короткое с плавающей точкой(4 байта) - мне это число нужно пересчитать в RGB цвет, причём так чтобы цвет получался одного оттенка (любого), т. е. чем меньше значения вещественного числа тем темнее, чем больше тем светлее... [/QUOTE]На самом деле, всё просто:
Предположим, что исходные числа лежат в диапазоне от A = 0 до B = 1. Берём некоторый (любой, достаточно насыщенный) цвет, то есть набор чисел (r, g, b) и рассматриваем его как вектор. Тогда для того, чтобы определить необходимый нам цвет для значения X из диапазона от 0 до 1, просто меняем длину вектора, т. е. проводим простейшую операцию: (r * X, g * X, b * X). В таком случае, все составляющие будут изменяться пропорционально и по свойствам RGB представления будет изменяться лишь яркость цвета, но не оттенок. То есть, числу 0 будет соответствовать чёрный цвет, а числу 1 - цвет, взятый нами изначально: (r, g, b). Промежуточным числам будут соответствовать цвета одного оттенка. Для произвольных A и B формула цвета будет выглядеть так: (r * Y, g * Y, b * Y), где Y = (X - A)/(B - A).

ЗЫ. 2 3A3-968M: ХА!!! Нахождение остатка от деления дробного числа на целое - невиданный доселе прорыв в математике. Поздравляю! Да ни один компилятор (даже C) не позволит тебе такое сделать. Можешь смело создавать свою алгебру и назвать её "агебра ЗАЗА", в которой заодно можно будет нацело делить иррациональные числа и складывать комплексные числа с матрицами...
К тому же, число 2^32 не имеет к RGB никакого отношения, поскольку во почти во всех реализациях RGB цвет представляется 16, 24, либо 64 битами, 32 битный цвет - это RGBA, то есть цвет с альфа-каналом. Да только и альфа-канал не имеет никакого отношения к данной задаче, поскольку речь идёт об отображении, а не о смешивании цветов.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог