2012-05-01 14 views
0

これは、HSLカラーコードを設定し、RGBで同等のものを印刷する必要があります。
97,153,194を出力します。
代わりに、0.3808,0.60153333333333,0.7592を出力します。HSLからRGBへの変換

function HSL(hue, saturation, lightness, alpha) 
    if hue < 0 or hue > 360 then 
     return 0, 0, 0, alpha 
    end 
    if saturation < 0 or saturation > 1 then 
     return 0, 0, 0, alpha 
    end 
    if lightness < 0 or lightness > 1 then 
     return 0, 0, 0, alpha 
    end 
    local chroma = (1 - math.abs(2 * lightness - 1)) * saturation 
    local h = hue/60 
    local x =(1 - math.abs(h % 2 - 1)) * chroma 
    local r, g, b = 0, 0, 0 
    if h < 1 then 
     r,g,b=chroma,x,0 
    elseif h < 2 then 
     r,b,g=x,chroma,0 
    elseif h < 3 then 
     r,g,b=0,chroma,x 
    elseif h < 4 then 
     r,g,b=0,x,chroma 
    elseif h < 5 then 
     r,g,b=x,0,chroma 
    else 
     r,g,b=chroma,0,x 
    end 
    local m = lightness - chroma/2 
    return r+m,g+m,b+m,alpha 
end 

print(HSL(205, .44, .57)) 
+0

あなたの関数定義は4つの引数を受け取りますが、あなたは3つだけを呼び出しています。これは意図的ですか?それはあなたのプログラムに影響を及ぼしますか? – sarnold

+0

[ウィキペディアアルゴリズム](http://en.wikipedia.org/wiki/HSL_and_HSV#From_HSL)をより詳しく理解してください。 –

答えて

5

この関数の値は、0-1です。範囲を0-256にするために256を掛けます。

+0

ではなく、255を掛けてください。さもなければ、255が最も高い値であることを確認してください。 – mlepage

関連する問題