HSL โ RGB ๋ณํ๊ธฐ๋?
์ด ๋๊ตฌ๋ HSL ๋ชจ๋ธ(์์ Hue, ์ฑ๋ Saturation, ๋ช ๋ Lightness)๋ก ํํ๋ ์์ ํ๋ฉดยทCSSยท์ด๋ฏธ์ง ํ์ผ์์ ์ฐ์ด๋ RGB ๋ชจ๋ธ๋ก ๋ฐ๊ฟ ์ค๋๋ค. HSL์ '์ด๋ค ์์ธ์ง(์์)'์ '์ผ๋ง๋ ์ ๋ช ํ์ง(์ฑ๋)', '์ผ๋ง๋ ๋ฐ์์ง(๋ช ๋)'๋ฅผ ๋ฐ๋ก ๋ค๋ฃจ๊ธฐ ๋๋ฌธ์ ๋์์ด๋์๊ฒ ์ง๊ด์ ์ธ ๋ฐ๋ฉด, RGB๋ ๊ฐ์ ์์ ๋นจ๊ฐยท์ด๋กยทํ๋ ๋น์ ์์ผ๋ก ๋ํ๋ ๋๋ค. ๋ณํ์ ์ ํํ๋ฉฐ, ์ ํจํ HSL ๊ฐ์ด๋ผ๋ฉด ์ด๋ค ๊ฐ์ด๋ ์ฒ๋ฆฌํฉ๋๋ค.
์ฌ์ฉ ๋ฐฉ๋ฒ
์์(Hue)์ ๋(0~360ยฐ), ์ฑ๋(Saturation)์ ๋ช
๋(Lightness)๋ ํผ์ผํธ(0~100%)๋ก ์
๋ ฅํ์ธ์. ๊ทธ๋ฌ๋ฉด 0๋ถํฐ 255๊น์ง์ rgb(r, g, b) ๊ฐ๊ณผ ํจ๊ป ์ค์๊ฐ ์์ ๋ฏธ๋ฆฌ๋ณด๊ธฐ๊ฐ ํ์๋์ด, ๊ฒฐ๊ณผ๋ฅผ ๋์ผ๋ก ์ง์ ํ์ธํ ์ ์์ต๋๋ค.
๋ณํ ๊ณต์ ์ค๋ช
๋จผ์ ์ฑ๋์ ๋ช ๋๋ฅผ 0~1 ๋ฒ์๋ก ํ์ฐํฉ๋๋ค. ์ฑ๋(์ปฌ๋ฌํํจ)๋ฅผ ๋ํ๋ด๋ ์ฑ๋๊ฐ(ํฌ๋ก๋ง)์ ๋ค์๊ณผ ๊ฐ์ด ๊ตฌํฉ๋๋ค.
$$C = (1 - |2L - 1|)\,S$$๋ณด์กฐ๊ฐ
$$X = C\left(1 - \left|\left(\tfrac{H}{60}\bmod 2\right) - 1\right|\right)$$๋ 60ยฐ์ฉ ๋๋ ์์ ๊ตฌ๊ฐ ๋ด๋ถ์ ์ค๊ฐ ํผํฉ์ ์ฒ๋ฆฌํ๊ณ ,
$$m = L - \tfrac{C}{2}$$๋ ์ ์ฒด ๊ฐ์ ์ํ๋ ๋ช ๋์ ๋ง๊ฒ ๋ณด์ ํฉ๋๋ค. ์์์ด ์ด๋ 60ยฐ ๊ตฌ๊ฐ์ ์ํ๋์ง์ ๋ฐ๋ผ \(C\), \(X\), \(0\) ์ \(R\), \(G\), \(B\) ์ ์ ํด์ง ์์๋ก ๋ฐฐ์ ํ ๋ค, \(m\) ์ ๋ํ๊ณ ๊ฐ ์ฑ๋์ 255๋ฅผ ๊ณฑํ ๋ค์ ๋ฐ์ฌ๋ฆผํฉ๋๋ค.
๊ณ์ฐ ์์
HSL(210ยฐ, 50%, 50%)์ธ ๊ฒฝ์ฐ: \(S = 0.5\), \(L = 0.5\).
$$C = (1 - |0|)\cdot 0.5 = 0.5$$\(H/60 = 3.5\) ์ด๋ฏ๋ก \((3.5 \bmod 2) = 1.5\),
$$X = 0.5\cdot(1 - |1.5 - 1|) = 0.25$$$$m = 0.5 - 0.25 = 0.25$$์์ 210ยฐ๋ 3๋ฒ ๊ตฌ๊ฐ(180~240ยฐ)์ ์ํ๋ฏ๋ก \((R',G',B') = (0,\ X,\ C) = (0,\ 0.25,\ 0.5)\). ์ฌ๊ธฐ์ \(m\) ์ ๋ํ๊ณ \(\times 255\) ํ๋ฉด \(R = 64\), \(G = 128\), \(B = 191\) โ rgb(64, 128, 191) ์
๋๋ค.
์์ฃผ ๋ฌป๋ ์ง๋ฌธ
์ ๋ ฅ๊ฐ์ ๋ฒ์๋ ์ด๋ป๊ฒ ๋๋์? ์์์ 0~360๋, ์ฑ๋์ ๋ช ๋๋ 0~100ํผ์ผํธ์ ๋๋ค.
์ ๊ฐ์ ๋ฐ์ฌ๋ฆผํ๋์? RGB ์ฑ๋์ 0๋ถํฐ 255๊น์ง์ ์ ์์ฌ์ผ ํ๋ฏ๋ก, ํ์ฐ๋ ๊ฒฐ๊ณผ๋ฅผ ๊ฐ์ฅ ๊ฐ๊น์ด ์ ์๋ก ๋ฐ์ฌ๋ฆผํฉ๋๋ค.
ํ์๋ ํํํ ์ ์๋์? ๋ค. ์ฑ๋๋ฅผ 0์ผ๋ก ๋๋ฉด ์์๊ฐ๊ณผ ์๊ด์์ด \(R\), \(G\), \(B\) ๊ฐ ๋ชจ๋ ๋ช ๋๊ฐ์ 0~255๋ก ํ์ฐํ ๊ฐ๊ณผ ๊ฐ์์ ธ ํ์์ด ๋ฉ๋๋ค.