Показать сообщение отдельно
  #13 (permalink)  
Старый 28.05.2012, 22:49
Аватар для cyber
I am Student
Отправить личное сообщение для cyber Посмотреть профиль Найти все сообщения от cyber
 
Регистрация: 17.12.2011
Сообщений: 4,415

Сообщение от cyber Посмотреть сообщение
все вот рабочий вариант (результаты сравнивал с 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));
Ответить с цитированием