Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Флейм (http://www.flasher.ru/forum/forumdisplay.php?f=7)
-   -   HSL 2 RGB (кто-то спрашивал) (http://www.flasher.ru/forum/showthread.php?t=37016)

Nox Noctis 10.09.2002 23:13

HSL 2 RGB (кто-то спрашивал)
 
это скорее к вопросу о том как убить время :)))

тут недавно (месяц назад может... :) ) кто-то спрашивал как перевести код цвета из системы

Hue - Saturation - Blur (или что то же самое Hue - Saturation - Luminance )

в систему

Red - Green - Blue

так вот... озадачившись вопросом убийства времени я нашел алгоритм :)) (это было просто на самом деле =)) )

он был написан на каком-то допотопном языке и я перевел его в ЭкшнСкрипт... мож кому-нить понадобится...
Код:

hsl = function (h, s, l) {
        var m1, m2;
        m2 = l<=0.5 ? l*(s+1) : (l+s-l*s);
        m1 = l*2-m2;
        r = Math.round(hue(m1, m2, h+1/3)*255);
        g = Math.round(hue(m1, m2, h)*255);
        b = Math.round(hue(m1, m2, h-1/3)*255);
        return (r << 16 | g << 8 | b);
};
hue = function (m1, m2, h) {
        if (h<0) {
                h += 1;
        }
        if (h>1) {
                h -= 1;
        }
        if (h*6<1) {
                return m1+(m2+m1)*h*6;
        } else if (h*2<1) {
                return m2;
        } else if (h*3<2) {
                return m1+(m2-m1)*(2/3-h)*6;
        }
        return m1;
};
//

// для теста это LightGreen:

// 33%H (т.е. 80 по шкале от нуля до 240)
// 100%S (т.е. полная насыщенность)
// 75%L (т.е. 180 по шкале от нуля до 240)
trace(hsl(.33, 1, .75));
// получаем 8585088 или 0x82FF80, что вполне соответствует истине

пояснения:
в функции hsl - все параметры в процентах... то есть 240 - это 1, 120 - это .5 и т д
...шкала H от нуля до 240, потому что речь идет о круговом изображении радуги и 360==0 - это красный цвет

почему шкалы S и L тоже от нуля до 240 - я не врубился...
ведь
S - в процентах количество серого (100%S - это полная насыщенность цвета указанного в Hue, а 0%S - это серый цвет)
L - количество белого в процентах (50%L - нормальная яркость)


зы: несмотря на то, что я понимаю что такое HSL и что такое RGB я абсолютно не понимаю закономерности... 8))) но работает, блин... =)

Nox Noctis 11.09.2002 17:39

...а вы говорите как убить время, как убить время... %)))

http://www.concrete-mixer.pisem.net/spinning_hex.html

http://www.concrete-mixer.pisem.net/spinning_trio.html

...все сделано скриптом, хотя конечно можно было и не извращаться так :)


сижу вот и думаю: а нафига это ? :)))

Denisator 21.09.2002 14:08

Ух ты!!!
Это я задавал вопрос. :-)
Тогда мне никто не ответил и мне пришлось отложить решение моей проблемы :-).
А на твой ответ я наткнулся совершенно случайно.
Большое спасибо.

[subway]design 21.09.2002 18:13

Я бы спросил RGB 2 HSL, мне для flashpainter'а нужен (ссылка в подписи). Нет такого?

Nox Noctis 26.09.2002 21:00

ну йопт...
стоило только поискать... :)

...хотя искал я канеш совсем не это :p

из RGB в HSB и обратно

из RGB в CMYK и обратно


Часовой пояс GMT +4, время: 05:52.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.