Я пытаюсь преобразовать некоторое значение HSL
в RBG
с помощью модуля Data.Colour. Док Хакед сказал, что 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
, как некоторые онлайн-конвертеры цветов сказал.
Что я делаю не так?