HSL โ RGB ๋ณํ๊ธฐ๋?
HSL์ ์์(Hue), ์ฑ๋(Saturation), ๋ช ๋(Lightness)์ ์ฝ์๋ก, ์์ ์ง๊ด์ ์ผ๋ก ํํํ๋ ๋ฐฉ์์ ๋๋ค. ์์์ ์์ํ์์์ ๊ฐ๋(0~360ยฐ)๋ฅผ, ์ฑ๋๋ ์์ ์ ๋ช ํจ(0~100%)์, ๋ช ๋๋ ์์ด ๋ฐ์์ง ์ด๋์ด์ง(0~100%)๋ฅผ ๋ํ๋ ๋๋ค. ๋ฐ๋ฉด RGB๋ ๊ฐ์ ์์ ๋นจ๊ฐ(Red)ยท์ด๋ก(Green)ยทํ๋(Blue) ์ธ ์ฑ๋๋ก ํํํ๋ฉฐ, ๊ฐ ๊ฐ์ 0๋ถํฐ 255๊น์ง์ ๋๋ค. ์ด ํ์์ ํ๋ฉด, CSS, ์ด๋ฏธ์ง ํ์ผ์์ ๋๋ฃจ ์ฐ์ ๋๋ค. ์ด ๋ณํ๊ธฐ๋ HSL ์์์ ์ ํํ ๋์ํ๋ RGB ๊ฐ์ผ๋ก ๋ฐ๊ฟ ์ค๋๋ค.
์ฌ์ฉ ๋ฐฉ๋ฒ
์์์ ๊ฐ๋(๋)๋ก, ์ฑ๋์ ๋ช
๋๋ ๊ฐ๊ฐ ํผ์ผํธ(%)๋ก ์
๋ ฅํ์ธ์. ๊ณ์ฐ๊ธฐ๋ ๊ณง๋ฐ๋ก ๋์ํ๋ rgb(r, g, b) ๊ฐ์ ๋ณด์ฌ ์ฃผ๊ณ , ์ค์๊ฐ ๋ฏธ๋ฆฌ๋ณด๊ธฐ ์์ ๊ฒฌ๋ณธ๊น์ง ํ์ํด ์์ ๋์ผ๋ก ๋ฐ๋ก ํ์ธํ ์ ์์ต๋๋ค.
๋ณํ ๊ณต์ ํ์ด
๋จผ์ S์ L์ 0~1 ์ฌ์ด์ ์์๋ก ๋ฐ๊ฟ๋๋ค. ์ฑ๋(์์ ๊ฐ๋)์ ํด๋นํ๋ ํฌ๋ก๋ง๋ \(C = (1 - |2L - 1|)\cdot S\)๋ก ๊ตฌํฉ๋๋ค. ์ค๊ฐ ์ฑ๋ถ ๊ฐ์ \(X = C\,(1 - |(H/60 \bmod 2) - 1|)\)์ด๋ฉฐ, ๋งค์น ๊ฐ \(m = L - C/2\)๋ ์ ์ฒด ๊ฐ์ ์ฌ๋ฐ๋ฅธ ๋ช ๋๋ก ๋ณด์ ํฉ๋๋ค. ์์์ 60ยฐ์ฉ 6๊ฐ์ ๊ตฌ๊ฐ์ผ๋ก ๋๋๊ณ , ๊ฐ ๊ตฌ๊ฐ๋ง๋ค CยทXยท0์ด R, G, B ์๋ฆฌ์ ์ ํด์ง ์์๋๋ก ๋ฐฐ์ ๋ฉ๋๋ค. ๋ง์ง๋ง์ผ๋ก ๊ฐ ์ฑ๋ถ์ m์ ๋ํ ๋ค 255๋ฅผ ๊ณฑํ๊ณ ๊ฐ์ฅ ๊ฐ๊น์ด ์ ์๋ก ๋ฐ์ฌ๋ฆผํฉ๋๋ค.
$$(R,G,B) = \big( (R_1+m)\cdot 255,\; (G_1+m)\cdot 255,\; (B_1+m)\cdot 255 \big)$$ $$\text{where}\quad \left\{ \begin{aligned} C &= (1 - |2L - 1|)\cdot S \\ X &= C\,(1 - |(H/60 \bmod 2) - 1|) \\ m &= L - \tfrac{C}{2} \\ S &= \frac{\text{Saturation }(\%)}{100},\quad L = \frac{\text{Lightness }(\%)}{100} \\ H &= \text{Hue }(^{\circ}) \end{aligned} \right.$$๊ณ์ฐ ์์
HSL(210ยฐ, 50%, 60%)์ ๊ฒฝ์ฐ: \(S = 0.5\), \(L = 0.6\). \(C = (1 - |1.2 - 1|) \times 0.5 = (1 - 0.2) \times 0.5 = 0.4\). \(H/60 = 3.5\)์ด๋ฏ๋ก \(X = 0.4 \times (1 - |3.5 \bmod 2 - 1|) = 0.4 \times (1 - 0.5) = 0.2\). \(m = 0.6 - 0.2 = 0.4\). ๊ตฌ๊ฐ 3(\(3 \le H/60 < 4\))์์๋ \((R',G',B') = (0, X, C) = (0, 0.2, 0.4)\)์ด ๋ฉ๋๋ค. ์ฌ๊ธฐ์ m์ ๋ํ๋ฉด \((0.4, 0.6, 0.8)\)์ด๊ณ , 255๋ฅผ ๊ณฑํ๋ฉด (102, 153, 204)์ ๋๋ค.
์์ฃผ ๋ฌป๋ ์ง๋ฌธ
RGB ์ซ์๊ฐ ์ ๋ฐ์ฌ๋ฆผ๋๋์? RGB ์ฑ๋์ 0๋ถํฐ 255๊น์ง์ ์ ์์ด๊ธฐ ๋๋ฌธ์, ๋น์จ๋ก ๊ณ์ฐํ ๊ฐ์ ๊ฐ์ฅ ๊ฐ๊น์ด ์ ์๋ก ๋ฐ์ฌ๋ฆผํฉ๋๋ค.
์ฑ๋๊ฐ 0%์ด๋ฉด ์ด๋ค ์์ด ๋์ค๋์? ์ฑ๋๊ฐ ์์ ํ ๋น ์ง ์์ ํ์์ด๋ฉฐ, ๊ทธ ๊ฐ์ ๋ช ๋์๋ง ์ข์ฐ๋ฉ๋๋ค. ์ฆ R, G, B ์ธ ์ฑ๋ ๊ฐ์ด ๋ชจ๋ ๊ฐ์์ง๋๋ค.
360์ ๋๋ ์์ ๊ฐ์ ์ ๋ ฅํ๋ฉด ์๋์ผ๋ก ์ํํ๋์? ๋ค. ์์์ 360์ผ๋ก ๋๋ ๋๋จธ์ง(modulo 360)๋ก ์ฒ๋ฆฌ๋๋ฏ๋ก 370ยฐ๋ 10ยฐ์ ๋์ผํ๊ฒ ๋์ํฉ๋๋ค.