PDA

Просмотр полной версии : HSB>RGB


TanaTiX
06.03.2009, 15:04
Встала такая задача: конвертировать во флеше из HSB в RGB.
Вот накидал немного, работает, но не совсем правильно. Вот спрашиваю совета.

function hsb(h,s,v){
s=s/100;
v=v/100;

k=Math.ceil(h/60)%6;
f=h/60-Math.ceil(h/60);

p=v*(1-s);
q=v*(1-f*s);
t=v*(1-(1-f)*s);
if(k==0){
r=v; g=t; b=p;
}
if(k==1){
r=q; g=v; b=p;
}
if(k==2){
r=p; g=v; b=t;
}
if(k==3){
r=p; g=q; b=v;
}
if(k==4){
r=t; g=p; b=v;
}
if(k==5){
r=v; g=p; b=q;
}
r=Number(Math.round(r*255)).toString(16);
g=Number(Math.round(g*255)).toString(16);
b=Number(Math.round(b*255)).toString(16);
if(r.length==1){
r=r+r;
}
if(g.length==1){
g=g+g;
}
if(b.length==1){
b=b+b;
}
color="0x"+r+g+b;
return color;
}

this.createEmptyMovieClip("triangle_mc", 1);
triangle_mc.beginFill(hsb(155,81,84), 100);
triangle_mc.moveTo(200, 200);
triangle_mc.lineTo(300, 300);
triangle_mc.lineTo(100, 300);
triangle_mc.lineTo(200, 200);
triangle_mc.endFill();


PS.
по поводу формулы конвертации можно глянуть тут (http://ru.wikipedia.org/wiki/HSB)

iNils
06.03.2009, 15:07
Вот накидал немногоЗачем накидывать, когда уже есть готовые решения? Зайдите в поиск.

TanaTiX
06.03.2009, 15:18
Ну хотя бы потому что самому разобраться интересно...

2morrowMan
06.03.2009, 21:49
Ну хотя бы потому что самому разобраться интересно...
Хм... если "самому разобраться", то зачем подсказки спрашивать на форуме ? :)

Котяра
06.03.2009, 23:30
неделю - две, три назад был топик с подробным разбором аналогичной ситуации.

Добавлено через 1 час 28 минут
работает, но не совсем правильно. Вот спрашиваю совета.
Что именно не правильно? В чем состоит ваш вопрос?
-правильно ли я портировал алгоритм из википедии на AS2?
-пралиьный ли алгоритм в википедии?
Что именно?