Lo scopo principale del modello di colore RGB (rosso verde blu) è il rilevamento, la rappresentazione e la visualizzazione di immagini in sistemi elettronici, quali televisori e computer
HSL (Hue Saturation Lightness) è un modello di colore alternativo, progettato negli anni '70 dai ricercatori di computer grafica per allinearsi più da vicino al modo in cui la visione umana percepisce gli attributi di creazione del colore
Ecco gli articoli wiki per RGB e HSL . È comune per i programmi di grafica eseguire i calcoli in HSL e successivamente convertirli nel formato preferito per la maggior parte degli schermi: RGB.
Il compito è quello di scrivere una funzione / programma che accetta HSL come input e output RGB.
Puoi scegliere la tua rappresentazione preferita per l'I / O, purché sia coerente tra di loro.
Ad esempio, possono essere una matrice / tupla con 3 elementi o un oggetto con 3 proprietà denominate h
, s
e l
, ma accetterò altre variazioni intelligenti, come la ricezione di hsl come numero intero (perdita di precisione) e l'output di un numero intero rgb.
Si può presumere che l'input sia sicuro in termini di intervallo e formato, entrambi i quali è possibile decidere. Consiglio vivamente gli intervalli 0-1 0-1 0-1
o 0-360 0-100 0-100
per hsl e 0-1 0-1 0-1
o 0-255 0-255 0-255
per rgb.
Ogni risposta è richiesta per specificare entrambe le precedenti e inserire diverse varianti nelle risposte se ne sei particolarmente orgoglioso, anche se non hanno meno caratteri rispetto alle altre varianti. Metti il più piccolo in cima.
Casi di test Pseudo per 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
Le formule per la conversione sono disponibili qui :
Questo è un bel modo per visualizzare la conversione:
a-b
notazione è sbagliato di per sé quando si ha a che fare con valori non interi, ma direi che va bene mantenere la domanda più leggibile. Se qualcun altro si lamenta, lo ripenserò, quindi grazie per
[0,360)
allora :)
H
of0-360
è[0,360)
, sarebbe meglio scrivere come0-359
?