RGB рд╕реЗ HSL рдХрдиреНрд╡рд░реНрдЯрд░ рдХреНрдпрд╛ рд╣реИ?
рдпрд╣ рдЯреВрд▓ RGB рдореЙрдбрд▓ (Red рдпрд╛рдиреА рд▓рд╛рд▓, Green рдпрд╛рдиреА рд╣рд░рд╛, Blue рдпрд╛рдиреА рдиреАрд▓рд╛ тАФ рд╣рд░ рдПрдХ 0тАУ255 рдХреЗ рдмреАрдЪ) рдореЗрдВ рджрд┐рдП рдЧрдП рдХрд┐рд╕реА рд░рдВрдЧ рдХреЛ HSL рдореЙрдбрд▓ (Hue рдпрд╛рдиреА рд╣реНрдпреВ, Saturation рдпрд╛рдиреА рд╕реИрдЪреБрд░реЗрд╢рди, Lightness рдпрд╛рдиреА рд▓рд╛рдЗрдЯрдиреЗрд╕) рдореЗрдВ рдмрджрд▓ рджреЗрддрд╛ рд╣реИред рдбрд┐рдЬрд╝рд╛рдЗрдирд░реЛрдВ рдХреЗ рд▓рд┐рдП HSL рдЕрдХреНрд╕рд░ рдЬрд╝реНрдпрд╛рджрд╛ рд╕рдордЭ рдореЗрдВ рдЖрдиреЗ рд╡рд╛рд▓рд╛ рд╣реЛрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд░рдВрдЧ рдХреА рдЫрдЯрд╛ (рд╣реНрдпреВ) рдХреЛ рдЗрд╕ рдмрд╛рдд рд╕реЗ рдЕрд▓рдЧ рдХрд░ рджреЗрддрд╛ рд╣реИ рдХрд┐ рд╡рд╣ рдХрд┐рддрдирд╛ рдЪрдЯрдХ (рд╕реИрдЪреБрд░реЗрд╢рди) рдФрд░ рдХрд┐рддрдирд╛ рд╣рд▓реНрдХрд╛ рдпрд╛ рдЧрд╣рд░рд╛ (рд▓рд╛рдЗрдЯрдиреЗрд╕) рд╣реИред рдпрд╣ рд░реВрдкрд╛рдВрддрд░рдг рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ рд╣реИ рдФрд░ рдХрд┐рд╕реА рднреА рдбрд┐рд╡рд╛рдЗрд╕ рдпрд╛ рджреЗрд╢ рд╕реЗ рдмрдВрдзрд╛ рд╣реБрдЖ рдирд╣реАрдВ рд╣реИред
рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░реЗрдВ
рдЕрдкрдиреЗ рд░рдВрдЧ рдХреЗ рд▓рд╛рд▓, рд╣рд░реЗ рдФрд░ рдиреАрд▓реЗ рдорд╛рди рджрд░реНрдЬ рдХрд░реЗрдВ тАФ рд╣рд░ рдПрдХ 0 рд╕реЗ 255 рдХреЗ рдмреАрдЪред рдХреИрд▓рдХреБрд▓реЗрдЯ рджрдмрд╛рдПрдБ рдФрд░ рдЗрд╕рдХреЗ рдмрд░рд╛рдмрд░ рдХрд╛ HSL рдЯреНрд░рд┐рдкрд▓ рдкрд╛рдПрдБ, рдЬрд┐рд╕реЗ рдЖрдк рд╕реАрдзреЗ CSS рдореЗрдВ hsl(H, S%, L%) рдХреЗ рд░реВрдк рдореЗрдВ рдкреЗрд╕реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдлрд╝реЙрд░реНрдореВрд▓рд╛ рд╕рдордЭреЗрдВ
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рд╣рд░ рдЪреИрдирд▓ рдХреЛ 255 рд╕реЗ рднрд╛рдЧ рджреЗрдХрд░ рд╕рд╛рдорд╛рдиреНрдп (normalize) рдХрд░реЗрдВ, рддрд╛рдХрд┐ рд╡рд╣ 0тАУ1 рдХреА рд╕реАрдорд╛ рдореЗрдВ рдЖ рдЬрд╛рдПред рдорд╛рди рд▓реАрдЬрд┐рдП max рдФрд░ min рдЗрди рддреАрдиреЛрдВ рдорд╛рдиреЛрдВ рдореЗрдВ рд╕реЗ рд╕рдмрд╕реЗ рдмрдбрд╝рд╛ рдФрд░ рд╕рдмрд╕реЗ рдЫреЛрдЯрд╛ рд╣реИрдВ, рдФрд░ \(\Delta = \max - \min\)ред рд▓рд╛рдЗрдЯрдиреЗрд╕ рд╣реЛрдЧреА \(L = (\max + \min) / 2\)ред рд╕реИрдЪреБрд░реЗрд╢рди рд╣реЛрдЧреА \(S = \Delta / (1 - \lvert 2L - 1 \rvert)\), рдпрд╛ рдЬрдм \(\Delta = 0\) рд╣реЛ (рдпрд╛рдиреА рдЧреНрд░реЗ рд░рдВрдЧ) рддрдм 0ред рд╣реНрдпреВ рдЙрд╕ рдЪреИрдирд▓ рд╕реЗ рдирд┐рдХрд╛рд▓реА рдЬрд╛рддреА рд╣реИ рдЬреЛ рд╕рдмрд╕реЗ рдмрдбрд╝рд╛ рд╣реЛ, рдФрд░ рдЙрд╕реЗ \(60^{\circ}\) рд╕реЗ рдЧреБрдгрд╛ рдХрд░рдХреЗ 0тАУ360┬░ рдХреА рд╕реАрдорд╛ рдореЗрдВ рд▓рдкреЗрдЯ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
$$L = \frac{C_{\max} + C_{\min}}{2}, \quad S = \frac{C_{\max} - C_{\min}}{1 - \lvert 2L - 1 \rvert}$$ $$\text{where}\quad \left\{ \begin{aligned} R^{\prime} &= \frac{\text{Red}}{255}, \;\; G^{\prime} = \frac{\text{Green}}{255}, \;\; B^{\prime} = \frac{\text{Blue}}{255} \\ C_{\max} &= \max(R^{\prime}, G^{\prime}, B^{\prime}), \;\; C_{\min} = \min(R^{\prime}, G^{\prime}, B^{\prime}) \end{aligned} \right.$$ $$H = 60^{\circ} \times \begin{cases} \dfrac{G^{\prime} - B^{\prime}}{\Delta} \bmod 6 & C_{\max} = R^{\prime} \\[0.6em] \dfrac{B^{\prime} - R^{\prime}}{\Delta} + 2 & C_{\max} = G^{\prime} \\[0.6em] \dfrac{R^{\prime} - G^{\prime}}{\Delta} + 4 & C_{\max} = B^{\prime} \end{cases}$$
рд╣рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдЙрджрд╛рд╣рд░рдг
рдЯрдорд╛рдЯрд░ рдЬреИрд╕рд╛ рд▓рд╛рд▓ рд░рдВрдЧ RGB(255, 99, 71) рд▓реАрдЬрд┐рдПред рд╕рд╛рдорд╛рдиреНрдпреАрдХреГрдд рдорд╛рди: \(R=1\), \(G=0.388\), \(B=0.278\)ред \(\max=1\), \(\min=0.278\), \(\Delta=0.722\)ред \(L = (1 + 0.278)/2 = 0.639 \to 63.9\%\)ред \(S = 0.722 / (1 - \lvert 2\cdot 0.639 - 1 \rvert) = 0.722 / 0.722 = 1 \to 100\%\)ред рдЪреВрдБрдХрд┐ \(\max = R\) рд╣реИ, рдЗрд╕рд▓рд┐рдП \(H = 60 \times ((0.388 - 0.278)/0.722) = 60 \times 0.1525 \approx 9.13^{\circ}\)ред рдкрд░рд┐рдгрд╛рдо: hsl(9.13, 100%, 63.92%)ред
рдЕрдХреНрд╕рд░ рдкреВрдЫреЗ рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рд╕рд╡рд╛рд▓
рдЧреНрд░реЗ рд░рдВрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рд╕реИрдЪреБрд░реЗрд╢рди 0 рдХреНрдпреЛрдВ рд╣реЛрддреА рд╣реИ? рдЬрдм рддреАрдиреЛрдВ рдЪреИрдирд▓ рдмрд░рд╛рдмрд░ рд╣реЛрддреЗ рд╣реИрдВ, рддреЛ \(\Delta = 0\) рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рдпрд╛рдиреА рдХреЛрдИ рд░рдВрдЧ рд╕рдВрдмрдВрдзреА рдЬрд╛рдирдХрд╛рд░реА рд╣реА рдирд╣реАрдВ рдмрдЪрддреА рдФрд░ рд╕реИрдЪреБрд░реЗрд╢рди рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд (undefined) рд╣реЛрддреА рд╣реИ тАФ рдкрд░рдВрдкрд░рд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдЗрд╕реЗ 0 рдорд╛рди рд▓рд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдХреНрдпрд╛ H, S, L рдХреЛ рд░рд╛рдЙрдВрдб рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ? рд╕реНрдХреНрд░реАрди рдкрд░ рджрд┐рдЦрдиреЗ рд╡рд╛рд▓реЗ рдорд╛рди рджреЛ рджрд╢рдорд▓рд╡ рддрдХ рд░рд╛рдЙрдВрдб рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рднреАрддрд░ рдЧрдгрдирд╛ рдХрд┐рдП рдЧрдП рдЕрд╕рд▓реА рдорд╛рди рдкреВрд░реА рд╕рдЯреАрдХрддрд╛ рдХреЗ рд╕рд╛рде рд░рдЦреЗ рдЬрд╛рддреЗ рд╣реИрдВред
рдХреНрдпрд╛ рдореИрдВ рд╡рд╛рдкрд╕ рдмрджрд▓ рд╕рдХрддрд╛ рд╣реВрдБ? рд╣рд╛рдБ тАФ HSL рд╕реЗ RGB рдЗрд╕рдХреА рдЙрд▓рдЯреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рд╣реНрдпреВ рд╕реЗрдХреНрдЯрд░ рдФрд░ рдХреНрд░реЛрдорд╛ рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рд╣реЛрддрд╛ рд╣реИред