C.....Subroutine to convert (h,s,v) values to (r,g,b) values. subroutine hsvrgb(h,s,v,ir,ig,ib) implicit real (a-h,o-z) real pqvt(4) integer irpnt(6), igpnt(6), ibpnt(6) data irpnt/3,2,1,1,4,3/,igpnt/4,3,3,2,1,1/,ibpnt/1,1,4,3,3,2/ C..... C input: 0 <= h <= 360 (hue) C 0 <= v <= 1.0 (value or brightness) C 0 <= s <= 1.0 (saturation) C output: 0 <= ir,ig,ib <= maxval C..... if (s .eq. 0.0) then ir = 255.0*v ig = ir ib = ir return endif if (h .eq. 360.0) h=0.0 h = h / 60.0 i = int(h) f = h-i pqvt(3) = 255.0*v pqvt(1) = pqvt(3)*(1.0-s) pqvt(2) = pqvt(3)*(1.0-s*f) pqvt(4) = pqvt(3)*(1.0-s*(1.0-f)) i = i + 1 ir = pqvt(irpnt(i)) ig = pqvt(igpnt(i)) ib = pqvt(ibpnt(i)) return end