Wpisany przez Tomasz Lubiński
wtorek, 06 września 2005 22:09
Przeważnie pisząc aplikację nie możemy korzystać bezpośrednio z modelu HSV, należy go zatem przetransformować do używanego powszechnie modelu RGB. Zakładamy przy tym, że parametry wejściowe mają wartości: H od 0.0 do 359.9, a S oraz V pomiędzy 0.0 a 1.0. Natomiast wartości składowych wynikowego modelu RGB mieszczą się w przedziałach od 0.0 do 1.0.
HSV do RGB
RGB do HSV
HSV do RGB
dane wejsciowe: hue, sat, val
dane wyjsciowe: red, grn, blu
if(val==0) {red=0; grn=0; blu=0;}
else{
hue/=60;
i = Math.floor(hue);
f = hue-i;
p = val*(1-sat);
q = val*(1-(sat*f));
t = val*(1-(sat*(1-f)));
if (i==0) {red=val; grn=t; blu=p;}
else if (i==1) {red=q; grn=val; blu=p;}
else if (i==2) {red=p; grn=val; blu=t;}
else if (i==3) {red=p; grn=q; blu=val;}
else if (i==4) {red=t; grn=p; blu=val;}
else if (i==5) {red=val; grn=p; blu=q;}
}
RGB do HSV
x = MIN(MIN(red, grn), blu);
val = MAX(MAX(red, grn), blu);
if (x == val) {hue=0; sat=0;}
else {
if red == x
f = grn-blu
else
if grn == x
f = blu-red
else
f = red-grn;
if red == x
i = 3
else
if grn == x
i = 5
else
i = 1;
hue = ((i-f/(val-x))*60)%360;
sat = ((val-x)/val);
}
| Autor | Język programowania | Komentarz | Otwórz | Pobierz | Ocena |
| Tomasz Lubiński | C/C++ | ![]() | ![]() |
![]() ![]() ![]() ![]() / 2 | |
| Tomasz Lubiński | Delphi/Pascal | ![]() | ![]() |
![]() ![]() ![]() ![]() / 2 | |
| Tomasz Lubiński | Java | ![]() | ![]() |
![]() ![]() ![]() ![]() / 2 |
Poprawiony: czwartek, 27 maja 2010 19:08






Komentarze