Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   перевод из HSB в RGB (https://javascript.ru/forum/events/28646-perevod-iz-hsb-v-rgb.html)

Kolyaj 28.05.2012 08:54

Цитата:

Сообщение от cyber
lH = parseInt (H / 60);

Не parseInt, а Math.floor.

cyber 28.05.2012 20:37

понял спс=)

cyber 28.05.2012 22:49

Цитата:

Сообщение от cyber (Сообщение 177082)
все вот рабочий вариант (результаты сравнивал с photoshop), может кому пригодиться
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));

в коде выше ошибка, из за нее моя клавиатура чуть не умерла=)
вот правельный
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));

cyber 28.05.2012 23:07

кстати не кто не подскажит как стандартными функциями перевести число из 10 й системы в 16ю

melky 28.05.2012 23:21

Цитата:

Сообщение от cyber (Сообщение 177238)
кстати не кто не подскажит как стандартными функциями перевести число из 10 й системы в 16ю

см. параметр метода toString у Number. (ссыль потерял)
num = 20;

alert( num.toString(16) );

cyber 28.05.2012 23:23

Цитата:

Сообщение от melky (Сообщение 177244)
см. параметр метода toString у Number. (ссыль потерял)
num = 20;

alert( num.toString(16) );

спс оно=)


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