X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость (

| Вход | Регистрация )

Открыть тему
Тема закрыта
> HSB > RGB
cyber_ua
cyber_ua
Topic Starter сообщение 27.5.2012, 22:07; Ответить: cyber_ua
Сообщение #1


нужно написать скриптик перевода из HSB в RGB, вот нашел формулу для HSV > RGB .
не могу понять чем отличается HSB/HSL/HSV и подходит ли эта формула для всех 3х случаев
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
cyber_ua
cyber_ua
Topic Starter сообщение 28.5.2012, 1:10; Ответить: cyber_ua
Сообщение #2


[JS]var convert = {
hsv_rgb: function (H,S,V)
{
var f , p, q , t, lH;
S = (S > 1 )? S/100 : S;
V = (V > 1)? V/100 : V;
lH = parseInt (H / 60);
f = H/60 - lH;
p = V * (1 - S);

q = V *(1 - S*f);

t = (1 - (1-f)* S);


switch (lH)
{
case 0: R = V; G = t; B = p; break;
case 1: R = q; G = V; B = p; break;
case 2: R = p; G = V; B = t; break;
case 3: R = p; G = q; B = V; break;
case 4: R = t; G = p; B = V; break;
case 5: R = V; G = p; B = q; break;}


return [parseInt(R*255), parseInt(G*255), parseInt(B*255)];

}

};
[/JS]
мож кому пригодиться , все работает (сравнивал с фотошопом)
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
cyber_ua
cyber_ua
Topic Starter сообщение 28.5.2012, 22:50; Ответить: cyber_ua
Сообщение #3


(Cyber_hb @ 16.12.2013, 04:08) *
все вот рабочий вариант (результаты сравнивал с photoshop), может кому пригодиться
[JS]function HSVtoRgb (H, S, V)
{
var f , p, q , t, lH;
S = (S > 1 )? S/100 : S;
V = (V > 1)? V/100 : V;
lH = parseInt (H / 60);
f = H/60 - lH;
p = V * (1 - S);

q = V *(1 - S*f);

t = (1 - (1-f)* S);


switch (lH)
{
case 0: R = V; G = t; B = p; break;
case 1: R = q; G = V; B = p; break;
case 2: R = p; G = V; B = t; break;
case 3: R = p; G = q; B = V; break;
case 4: R = t; G = p; B = V; break;
case 5: R = V; G = p; B = q; break;}


return [parseInt(R*255), parseInt(G*255), parseInt(B*255)];
}

alert(HSVtoRgb(330, 10,20));[/JS]

в коде выше ошибка, из за нее моя клавиатура чуть не умерла=)
вот правельный
[JS]
var convert = {
hsv_rgb: function (H,S,V)
{
var f , p, q , t, lH;
S /=100;
V /=100;
lH = Math.floor(H / 60);
f = H/60 - lH;
p = V * (1 - S);

q = V *(1 - S*f);

t = V* (1 - (1-f)* S);


switch (lH)
{
case 0: R = V; G = t; B = p; break;
case 1: R = q; G = V; B = p; break;
case 2: R = p; G = V; B = t; break;
case 3: R = p; G = q; B = V; break;
case 4: R = t; G = p; B = V; break;
case 5: R = V; G = p; B = q; break;}


return [parseInt(R*255), parseInt(G*255), parseInt(B*255)];

}

};

alert(convert.hsv_rgb(180,97,57));
[/JS]
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
cyber_ua
cyber_ua
Topic Starter сообщение 28.5.2012, 23:16; Ответить: cyber_ua
Сообщение #4


кстати не кто не подскажит как стандартными функциями перевести число из 10 й системы в 16ю , а то не могу вспомнить
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Muxa_hb
Muxa_hb
сообщение 28.5.2012, 23:24; Ответить: Muxa_hb
Сообщение #5


[PHP]base_convert()[/PHP] (php) ?
в js не знаю
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
cyber_ua
cyber_ua
Topic Starter сообщение 28.5.2012, 23:33; Ответить: cyber_ua
Сообщение #6


(Muxa_hb @ 29.5.2012, 02:24) *
[PHP]base_convert()[/PHP] (php) ?
в js не знаю


можно так
[JS]num = 20;

alert( num.toString(16) );
[/JS]
вспомнил:rjunimagu:
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Muxa_hb
Muxa_hb
сообщение 28.5.2012, 23:40; Ответить: Muxa_hb
Сообщение #7


:rolleyes:
все гениальное просто)))

Замечание модератора:
Эта тема была закрыта автоматически ввиду отсутствия активности в ней на протяжении 100+ дней.
Если Вы считаете ее актуальной и хотите оставить сообщение, то воспользуйтесь кнопкой
или обратитесь к любому из модераторов.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


 



RSS Текстовая версия Сейчас: 16.4.2024, 12:42
Дизайн