我正在尝试使用 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
in [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
那样。
我究竟做错了什么?