O principal objetivo do modelo de cores RGB (vermelho verde azul) é detectar, representar e exibir imagens em sistemas eletrônicos, como televisores e computadores
HSL (Hue Saturation Lightness) é um modelo de cor alternativo, projetado na década de 1970 por pesquisadores de computação gráfica para se alinhar mais de perto com a maneira como a visão humana percebe atributos de produção de cores
Aqui estão os artigos do wiki para RGB e HSL . É comum que programas gráficos façam os cálculos em HSL e depois convertam para o formato preferido para a maioria das telas: RGB.
A tarefa é escrever uma função / programa que aceite HSL como entrada e produza RGB.
Você pode escolher sua representação preferida para E / S, desde que consistente entre elas.
Por exemplo, eles podem ser um array / tupla com 3 elementos ou um objeto com 3 propriedades nomeadas h
, s
e l
, mas eu vou aceitar outras variações inteligentes, como receber o HSL como um inteiro (precisão perder) e produzir um inteiro rgb.
A entrada pode ser considerada segura no intervalo e no formato, os quais você pode decidir. Eu sugiro fortemente os intervalos 0-1 0-1 0-1
ou 0-360 0-100 0-100
para hsl e / 0-1 0-1 0-1
ou 0-255 0-255 0-255
rgb.
Cada resposta é necessária para especificar as duas opções acima e coloque várias variações em suas respostas se você estiver particularmente orgulhoso delas, mesmo que elas não tenham menos caracteres que suas outras variações. Coloque o menor por cima.
Casos de pseudo teste para 0-360 0-100 0-100
→0-255 0-255 0-255
h s l → r g b
0 0 0 → 0 0 0
90 56 17 → 43 68 19
202 19 39 → 81 104 118
72 55 26 → 88 103 30
As fórmulas para a conversão podem ser encontradas aqui :
Essa é uma boa maneira de visualizar a conversão:
a-b
notação é errada por si só ao lidar com valores não inteiros, mas eu diria que não há problema em manter a pergunta mais legível. Se alguém reclamar, eu vou repensar, então obrigado por apontar isso
[0,360)
então :)
H
of0-360
é[0,360)
: seria melhor escrito como0-359
?