HSL โ Hex ๋ณํ๊ธฐ๋?
์ด ๋๊ตฌ๋ HSL ๋ชจ๋ธ โ ์์(Hue), ์ฑ๋(Saturation), ๋ช
๋(Lightness) โ ๋ก ํํ๋ ์์ CSS, ๋์์ธ ์ํํธ์จ์ด, ์น ๊ฐ๋ฐ์์ ์ฌ์ฉํ๋ 16์ง์(ํฅ์ค) ํ๊ธฐ๋ฒ์ผ๋ก ๋ณํํฉ๋๋ค. HSL์ ์ฌ๋์ด ์ง๊ด์ ์ผ๋ก ๋ค๋ฃจ๊ธฐ ์ข์๋ฐ, ์์์ ์์ํ์์ ์ด๋ค ์์ธ์ง๋ฅผ ๊ณ ๋ฅด๊ณ , ์ฑ๋๋ ์์ ์ ๋ช
ํจ์, ๋ช
๋๋ ์ผ๋ง๋ ์ด๋ก๊ฑฐ๋ ๋ฐ์์ง๋ฅผ ์กฐ์ ํ๊ธฐ ๋๋ฌธ์
๋๋ค. ๋ฐ๋ฉด ํฅ์ค(์: #3F7FBF)๋ ๋ธ๋ผ์ฐ์ ์ ๊ฐ์ข
๋๊ตฌ๊ฐ ์ค์ ๋ก ์ธ์ํ๋ ํ์์
๋๋ค.
์ฌ์ฉ ๋ฐฉ๋ฒ
์์(Hue)์ 0~360๋, ์ฑ๋(Saturation)๋ฅผ 0~100ํผ์ผํธ, ๋ช ๋(Lightness)๋ฅผ 0~100ํผ์ผํธ๋ก ์ ๋ ฅํ๋ฉด, ๊ทธ ๊ฒฐ๊ณผ๋ก ๋์ค๋ ํฅ์ค ์ฝ๋, RGB ์ฑ๋ ๊ฐ, ๊ทธ๋ฆฌ๊ณ ์ค์๊ฐ ์์ ๋ฏธ๋ฆฌ๋ณด๊ธฐ๋ฅผ ๋ฐ๋ก ํ์ธํ ์ ์์ต๋๋ค. ์ด ๋ณํ์ ๋ชจ๋ ์์ ๋ณดํธ์ ์ผ๋ก ์ ์ฉ๋๋ฉฐ, ๋ณ๋์ ์ํํธ์จ์ด๊ฐ ํ์ ์์ต๋๋ค.
๋ณํ ๊ณต์ ํ์ด
๋ณํ์ ๋จผ์ ์ฑ๋(chroma) \(C = (1 - |2L - 1|)\cdot S\) ๋ฅผ ๊ตฌํฉ๋๋ค. ์ฌ๊ธฐ์ S์ L์ 0~1 ์ฌ์ด์ ์์์ ๋๋ค. ๋ณด์กฐ ๊ฐ \(X = C\left(1 - \left|\left(\tfrac{H}{60}\bmod 2\right) - 1\right|\right)\) ๋ ๊ธฐ๋ณธ ์์ ์ฌ์ด์ ๊ทธ๋ผ๋ฐ์ด์ ์ ์ฒ๋ฆฌํ๊ณ , ๋ฐ๊ธฐ ๋ณด์ ๊ฐ \(m = L - \tfrac{C}{2}\) ๋ ๊ฒฐ๊ณผ๋ฅผ ์ฌ๋ฐ๋ฅธ ๋ช ๋๋ก ๋์ด์ฌ๋ฆฝ๋๋ค. ์์์ด ์ด๋ 60ยฐ ๊ตฌ๊ฐ์ ์ํ๋์ง์ ๋ฐ๋ผ (Rโฒ,Gโฒ,Bโฒ) ์ฑ๋์ด C, X, 0 ์ค์์ ๋ฐฐ์ ๋ฉ๋๋ค. ๊ฐ ์ต์ข ์ฑ๋์ \(\text{round}((c^{\prime} + m)\cdot 255)\) ๋ก ๊ณ์ฐ๋๋ฉฐ, ํฅ์ค ๋ฌธ์์ด์ R, G, B์ ๋ ์๋ฆฌ 16์ง์๋ฅผ ์ด์ด ๋ถ์ธ ๊ฒ์ ๋ถ๊ณผํฉ๋๋ค.
$$\text{Hex} = \texttt{\#}\,\text{HH}_{R}\,\text{HH}_{G}\,\text{HH}_{B}$$
$$\text{where}\quad \left\{ \begin{aligned} C &= (1 - |2L - 1|)\cdot S \\ X &= C\left(1 - \left|\left(\tfrac{H}{60}\bmod 2\right) - 1\right|\right) \\ m &= L - \tfrac{C}{2} \\ (R,G,B) &= \text{round}\big((R^{\prime}+m,\,G^{\prime}+m,\,B^{\prime}+m)\cdot 255\big) \\ H &= \text{Hue},\quad S = \dfrac{\text{Sat}}{100},\quad L = \dfrac{\text{Light}}{100} \end{aligned} \right.$$
๊ณ์ฐ ์์
HSL(210, 50%, 50%)์ ๊ฒฝ์ฐ: \(S = 0.5\), \(L = 0.5\) ์ด๋ฏ๋ก \(C = (1 - |0|)\times 0.5 = 0.5\). \(H/60 = 3.5\) ์ด๋ฏ๋ก \((3.5 \bmod 2) = 1.5\) ์ด๊ณ \(X = 0.5\times(1 - |0.5|) = 0.25\). \(m = 0.5 - 0.25 = 0.25\). ์์ 210์ 3๋ฒ ๊ตฌ๊ฐ(180~240)์ ์ํ๋ฏ๋ก \((R^{\prime},G^{\prime},B^{\prime}) = (0, X, C)\)๊ฐ ๋ฉ๋๋ค. ๋ฐ๋ผ์ \(R = \text{round}(0.25\times 255) = 64\), \(G = \text{round}(0.5\times 255) = 128\), \(B = \text{round}(0.75\times 255) = 191\) โ #4080BF.
์์ฃผ ๋ฌป๋ ์ง๋ฌธ
์์ ๊ฐ์ ํ ๋ฐํด ๋์๊ฐ๋์? ๋ค โ ์์ 360์ 0๊ณผ ๋๊ฐ์ ๋นจ๊ฐ์ด๋ฉฐ, ์ด ๋๊ตฌ๋ ์ด๋ค ๊ฐ์ด๋ 0~360 ๋ฒ์๋ก ์ ๊ทํํฉ๋๋ค.
์ฑ๋ ๊ฐ์ด ๋ค๋ฅธ ๋๊ตฌ์ 1 ์ ๋ ์ฐจ์ด ๋๋ ์ด์ ๋ ๋ฌด์์ธ๊ฐ์? ๊ฐ์ฅ ๊ฐ๊น์ด ์ ์๋ก ๋ฐ์ฌ๋ฆผํ๋ฉด, ์์์ ์ ๋ฒ๋ฆฌ๋(truncate) ๋ค๋ฅธ ๋๊ตฌ์ ๋น๊ตํด ์ฑ๋ ๊ฐ์ด ยฑ1 ๋งํผ ๋ฌ๋ผ์ง ์ ์์ต๋๋ค. ๋ฐ์ฌ๋ฆผ์ด ๋ ์ ํํ ๋ฐฉ์์ ๋๋ค.
ํ์๋ ๋ง๋ค ์ ์๋์? ๋ค โ ์ฑ๋๋ฅผ 0์ผ๋ก ๋๋ฉด ์์ ๊ฐ์ด ๋ฌด์์ด๋ ์ธ ์ฑ๋ ๋ชจ๋ \(\text{round}(L\times 255)\)๋ก ๋์ผํด์ ธ ์ค๋ฆฝ์ ์ธ ํ์์ด ๋ง๋ค์ด์ง๋๋ค.