RGB (Kırmızı Yeşil Mavi) renk modelinin temel amacı, televizyonlar ve bilgisayarlar gibi elektronik sistemlerde görüntülerin algılanması, temsil edilmesi ve görüntülenmesidir.
HSL (Hue Saturation Lightness), 1970'lerde bilgisayar grafikleri araştırmacıları tarafından, insan vizyonunun renk yapma özelliklerini algılama biçimiyle daha yakından uyumlu olması için tasarlanmış alternatif bir renk modelidir.
RGB ve HSL için wiki makaleleri . Grafik programlarının HSL'de hesaplamaları yapması ve daha sonra çoğu ekran için tercih edilen biçime dönüştürmesi yaygındır: RGB.
Görev, HSL'yi giriş olarak alan ve RGB çıkışı yapan bir işlev / program yazmaktır.
I / O için tercih ettiğiniz temsili, aralarında tutarlı olduğu sürece seçebilirsiniz.
Örneğin bunlar, 3 elemanları ile bir dizi / demet veya adlandırılan 3 özelliklere sahip bir nesne olabilir h
, s
ve l
, ancak bir tamsayı (kaybetme hassas) HSL alınması ve bir RGB tamsayı çıkış gibi diğer akıllı varyasyonlarını kabul edilmeyecektir.
Girişin, her ikisi de karar verebileceğiniz menzil ve formatta güvenli olduğu varsayılabilir. Ben kesinlikle aralıkları 0-1 0-1 0-1
veya 0-360 0-100 0-100
hsl ve 0-1 0-1 0-1
veya 0-255 0-255 0-255
rgb için öneririz .
Her bir cevabın yukarıdakilerin her ikisini de belirtmesi ve onlardan özellikle gurur duyuyorsanız, diğer varyasyonlarınızdan daha az karakterleri olmasa bile cevaplarınıza çeşitli varyasyonlar eklemeniz gerekir. En küçüğünü üstüne koy.
İçin sahte test vakaları 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
Dönüşüm formüllerini burada bulabilirsiniz :
Bu, dönüşümü görselleştirmenin güzel bir yolu olarak:
a-b
tamsayı olmayan değerlerle uğraşırken notasyonu kullanmak kendi başına yanlıştır, ancak soruyu daha okunabilir tutmanın iyi olduğunu söyleyebilirim. Başka biri şikayet ederse, yeniden
[0,360)
o zamanki standart gösterimi kullanın :)
H
içinde0-360
olduğu[0,360)
, daha iyi olarak yazılabilir olur0-359
?