我已閱讀HSL到RGB算法在wikipedia。我瞭解它並可以使用它進行轉換。不過,我遇到另一種算法here,數學是「解釋」here。瞭解HSL到RGB顏色空間轉換算法
的算法是:
//H, S and L input range = 0 ÷ 1.0
//R, G and B output range = 0 ÷ 255
if (S == 0)
{
R = L * 255
G = L * 255
B = L * 255
}
else
{
if (L < 0.5) var_2 = L * (1 + S)
else var_2 = (L + S) - (S * L)
var_1 = 2 * L - var_2
R = 255 * Hue_2_RGB(var_1, var_2, H + (1/3))
G = 255 * Hue_2_RGB(var_1, var_2, H)
B = 255 * Hue_2_RGB(var_1, var_2, H - (1/3))
}
Hue_2_RGB(v1, v2, vH) //Function Hue_2_RGB
{
if (vH < 0) vH += 1
if(vH > 1) vH -= 1
if ((6 * vH) < 1) return (v1 + (v2 - v1) * 6 * vH)
if ((2 * vH) < 1) return (v2)
if ((3 * vH) < 2) return (v1 + (v2 - v1) * ((2/3) - vH) * 6)
return (v1)
}
我試過數學以下,但我想不出它。它是如何工作的?
這是從圓柱座標系轉換爲笛卡爾座標系。您可以創建包含飽和度和亮度(與顏色無關)的幫助變量'var_1'和'var_2'。然後將它們轉換爲RGB空間中的顏色值,具體取決於色調。 – igrinis