function hsv(h,s,v) ang = (h-150)*math.pi/180 ur = v*2.55 rad = ur * math.tan(s*math.atan(math.sqrt(6))/100) vr = rad * math.cos(ang)/math.sqrt(2) wr = rad * math.sin(ang)/math.sqrt(6) r = ur-vr-wr g = ur+vr-wr b = ur+wr+wr -- < 0 if r < 0 then rdim = ur/(vr+wr) r = 0 g = ur+(vr-wr)*rdim b = ur+2*wr*rdim elseif g < 0 then rdim = -ur/(vr-wr) r = ur-(vr+wr)*rdim g = 0 b = ur+2*wr*rdim elseif b < 0 then rdim = -ur/(vr+wr) r = ur-(vr+wr)*rdim g = ur+(vr+wr)*rdim b = 0 end -- > 255 if r > 255 then rdim = (ur-255)/(vr+wr) r = 255 g = ur+(vr-wr)*rdim b = ur+2*wr*rdim end if g > 255 then rdim = (255-ur)/(vr-wr) r = ur-(vr+wr)*rdim g = 255 b = ur+2*wr*rdim end if b > 255 then rdim = (255-ur)/(wr+wr) r = ur-(vr+wr)*rdim g = ur+(vr-wr)*rdim b = 255 end return rgb(r,g,b) end