Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Перевод цвета из HSB -> RGB 
:(
    Опции темы
Burrr
Дата 2.5.2007, 15:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 459
Регистрация: 4.9.2005

Репутация: нет
Всего: 20



Собственно сабж. 
Есть, к примеру, цвет в HSB-представлении: (274, 100, 100).
Как его привести к RGB-формату?
Для данного конкретного цвета RGB-представление будет таким: (144, 0, 255).


--------------------
PM MAIL ICQ   Вверх
Burrr
Дата 2.5.2007, 15:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 459
Регистрация: 4.9.2005

Репутация: нет
Всего: 20



Вопрос снимается, нашел и перевел в JavaScript-code:
Код
function HSLToRGB(Hue, Saturation, Luminance) {
    var R, G, B;
    var nH, nS, nL;
    var nF, nP, nQ, nT;
    var lH;
    if (Saturation > 0) {
        nH = Hue / 60;
        nL = Luminance / 100;
        nS = Saturation / 100;
        
        lH = parseInt(nH);
        nF = nH - lH;
        nP = nL * (1 - nS);
        nQ = nL * (1 - nS * nF);
        nT = nL * (1 - nS * (1 - nF));
        switch (lH) {
            case 0:
                R = nL * 255;
                G = nT * 255;
                B = nP * 255;
            break;
            case 1:
                R = nQ * 255;
                G = nL * 255;
                B = nP * 255;
            break;
            case 2:
                R = nP * 255;
                G = nL * 255;
                B = nT * 255;
            break;
            case 3:
                R = nP * 255;
                G = nQ * 255;
                B = nL * 255;
            break;
            case 4:
                R = nT * 255;
                G = nP * 255;
                B = nL * 255;
            break;
            case 5:
                R = nL * 255;
                G = nP * 255;
                B = nQ * 255;
            break;
        }
    } else {
        R = (Luminance * 255) / 100;
        G = R;
        B = R;
    }
    HSLToRGB01 = RGBToLongSafe(R, G, B);
}
    
function RGBToLongSafe(R, G, B) {
    R = parseInt(xLimit(R, 0, 255));
    G = parseInt(xLimit(G, 0, 255));
    B = parseInt(xLimit(B, 0, 255));
    alert(
        "R = " + R + "\n" +
        "G = " + G + "\n" +
        "B = " + B + "\n"
    );
}
    
function xLimit(Value, Lower, Higher) {
    if (Value < Lower) Value = Lower;
    if (Value > Higher) Value = Higher;
    return Value;
}

HSLToRGB(0, 0, 53);


Кому интересно, вот: http://www.xbeat.net/vbspeed/c_HSLToRGB.htm


--------------------
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Алгоритмы"

maxim1000

Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Алгоритмы | Следующая тема »


 




[ Время генерации скрипта: 0.0366 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.