Graphics Reference
In-Depth Information
UNDEFINED is a constant real number outside the interval [0,360].
procedure HSVToRGB ( real h, s, v; ref real r, b, g)
{ Input:
h Π[0,360] or UNDEFINED, s , v Π[0,1]
Output:
r, g, b Π[0,1]
begin
integer sextant;
real
fract, p, q, t;
if s = 0
then
if h = UNDEFINED
then begin r := v; g := v; b := v; end
else Error ()
{ invalid input }
else
begin
if h = 360 then h := 0;
else h := h/60;
sextant := Floor (h);
{ h is now in [0,6) }
fract := h - sextant;
{ the fractional part of h }
p := v*(1 - s);
q := v*(1 - (s*fract));
t := v*(1 - (s*(1 - fract)));
case i of
0 : begin r := v; g := t; b := p; end ;
1 : begin r := q; g := v; b := p; end ;
2 : begin r := p; g := v; b := t; end ;
3 : begin r := p; g := q; b := v; end ;
4 : begin r := t; g := p; b := v; end ;
5 : begin r := v; g := p; b := q; end ;
end
end
end ;
Algorithm 8.6.2.
Converting HSV to RGB.
Search WWH ::




Custom Search