Data.Colourモジュールを使用してHSL
値をに変換しようとしています。RBG
Hackage docによると、これHue
は常に0〜360の範囲です。しかし、現在は任意の範囲Saturation
とLightness
値があります。それらは[0,100]または[0,1]の範囲にありますか?
最初の変種は正しいと思いますが、そうではないようです。
λ> hsl 100 50 50
RGB {channelRed = 866.6666666666692, channelGreen = -2400.0, channelBlue = 2500.0}
彩度と明度の両方に[0、1]の範囲を使用しようとしたよりも。
λ> fmap truncate . (\(h,s,l) -> hsl h s l) $ (0,0,0)
RGB {channelRed = 0, channelGreen = 0, channelBlue = 0}
it :: RGB Integer
そういうわけで私はただSaturation
であるべきであるDouble
と考え始め[0,1]
ます。
たとえば、HSL
フォーマットには色の値があります。
λ> let c = (34.0,0.54,68.0)
c :: (Double, Double, Double)
に変換してRGB
すべての値を切り捨てるよりも
λ> fmap truncate . (\(h,s,l) -> hsl h s l) $ c
RGB {channelRed = 31, channelGreen = 63, channelBlue = 104}
しかし、一部のオンラインカラーコンバーター(31,63,104)::RGB
が言った(214,54,26)::HSL
ようです。
私は何が間違っているのですか?