The SDK offers a whole selection of color classes (Color4f, ColorCMYK,Color HSL, ColorLAB, ColorLCH, ColorXYZ) and conversion methods (or appropriate constructors).
I wonder why there is no Rhino.Display.ColorHSV class? Especially since the color-dialogs in the Rhino-UI are offering RGB and HSV:
fantastic! It’ll be great to have this in a future library.
In case anyone else has this problem NOW, here’s my little python workaround.
def ColorRGBToHSV(colorRGB):
""" converts RGB color to tuple of values for Hue, Saturation and Value
by first converting it to HSL and then doing a bit of math.
Parameters:
colorRGB -- RGB color
Returns:
tuple with hue, saturation and value, all [0,1]
"""
colorHSL = Rhino.Display.ColorHSL(colorRGB)
H = colorHSL.H
V = (2*colorHSL.L + colorHSL.S *(1- abs(2*colorHSL.L - 1))) / 2
S = 2*(V-colorHSL.L)/V
return (H,S,V)
def ColorHSVToRGB(colorHSV):
""" converts HSV color tuple to RGB-color
by creating HSL-color based on HSV-values and then converting it to ARGB-Color
Parameters:
tuple with hue, saturation and value, all [0,1]
Returns:
RGB color
"""
H = colorHSV[0]
L = 0.5 * colorHSV[2] * (2- colorHSV[1])
S = colorHSV[2] * colorHSV[1] / (1-abs(2*L-1))
colorHSL = Rhino.Display.ColorHSL(H,S,L)
return colorHSL.ToArgbColor()