我试图用Data.Colour模块将一些HSL
值转换为RBG
。 Hackage doc说Hue
总是在0-360的范围内。但是现在有任何范围的Saturation
和Lightness
值。它们是在[0,100]还是在[0,1]范围内?将HSL转换为RBG
我想第一个变体是正确的,但似乎不是。
λ> 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
应该是[0,1]
一个Double
。
例如,我们在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
像some online color-converters说。
我在做什么错?
他们期望色调在[0..360]而不是IMO本身[0,2π[[。 – leftaroundabout 2012-02-17 10:07:24