рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ рдХреЗ рд▓рд┐рдП рдПрдЪрдПрд╕рд╡реА рд╕реЗ рдЖрд░рдЬреАрдмреА рд░реВрдкрд╛рдВрддрд░рдг рдХрд╛ рдЕрдиреБрдХреВрд▓рди


рдПрдХ рд╢реМрдХ рдХреЗ рд░реВрдк рдореЗрдВ, рдореИрдВ рдПрд▓рдИрдбреА рдкреНрд░реЙрдкреНрд╕ рдХрд░рддрд╛ рд╣реВрдВ рдФрд░ рдПрдХ рджрд┐рд▓рдЪрд╕реНрдк рдХрд╛рдо рдХрд╛ рд╕рд╛рдордирд╛ рдХрд┐рдпрд╛ рд╣реИ - рдПрдХ рдкрд╛рд░рдВрдкрд░рд┐рдХ рдЗрдВрджреНрд░рдзрдиреБрд╖ рдХреЗ рдмрдЬрд╛рдп рдПрдХ рдирд┐рдпрдВрддреНрд░рд┐рдд рдПрд▓рдИрдбреА рдкрдЯреНрдЯреА рдкрд░ "рд╕реБрдВрджрд░" рдХреБрдЫ рджрд┐рдЦрд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдзреЗ рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ рдХреА рдореЗрдореЛрд░реА рдФрд░ рдкреНрд░реЛрд╕реЗрд╕рд░ рд╕рдордп рдХрд╛ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣рд┐рд╕реНрд╕рд╛ рдмрд░реНрдмрд╛рдж рдХрд┐рдП рдмрд┐рдирд╛ред

рдПрдХ рдПрд▓рдИрдбреА рдкрдЯреНрдЯреА рдХреЗ рдкрд┐рдХреНрд╕реЗрд▓ рдмреИрдХрд▓рд╛рдЗрдЯрд┐рдВрдЧ рдХреА рдЕрдиреБрдкрд╕реНрдерд┐рддрд┐ рдореЗрдВ рд╕реНрдХреНрд░реАрди рдкрд┐рдХреНрд╕реЗрд▓ рд╕реЗ рднрд┐рдиреНрди рд╣реЛрддреЗ рд╣реИрдВред рдПрдХ рдХрд╛рд▓рд╛ рдкрд┐рдХреНрд╕реЗрд▓ "рдмреНрд▓реИрдХ" рдирд╣реАрдВ рджрд┐рдЦреЗрдЧрд╛ - рдпрд╣ рдкреГрд╖реНрдарднреВрдорд┐ рдХреЗ рд╕рд╛рде рд╡рд┐рд▓реАрди рд╣реЛ рдЬрд╛рдПрдЧрд╛, рдФрд░ рдЧрддрд┐ рдореЗрдВ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ "рдкрд╛рд░рджрд░реНрд╢реА" рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рдпрджрд┐ рдЖрдк рдХрд┐рд╕реА рднреА рд░рдВрдЧ рдЪреИрдирд▓ рдореЗрдВ рдХрдо рд╕реЗ рдХрдо рдПрдХ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдкрд┐рдХреНрд╕реЗрд▓ рдЪрдордХ рдЬрд╛рдПрдЧрд╛ред рдмрджрд▓реЗ рдореЗрдВ, рд╕рдлреЗрдж рд╕реЗ рдПрдХ "рдЧреНрд░реЗ" рдкрд┐рдХреНрд╕реЗрд▓ рдХреЗрд╡рд▓ рдЪрдордХ рдореЗрдВ рднрд┐рдиреНрди рд╣реЛрдЧрд╛ рдФрд░ рдЕрдзрд┐рдХ рдордВрдж рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛, рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА рдпрд╣ "рд╕рдлреЗрдж" рд╣реИред

24-рдмрд┐рдЯ рдЖрд░рдЬреАрдмреА рдореЗрдВ рдкрд┐рдХреНрд╕реЗрд▓ рд░рдВрдЧ рд╕рдВрдЧреНрд░рд╣реАрдд рдФрд░ рдкреНрд░реЗрд╖рд┐рдд рд╣реЛрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕ рд░рдВрдЧ рд░реЗрдВрдЬ рдХрд╛ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣рд┐рд╕реНрд╕рд╛ (рдЕрд╕рдВрддреГрдкреНрдд рдФрд░ рдЙрдЬреНрдЬреНрд╡рд▓ рд░рдВрдЧ) рд╡реНрдпрдХреНрддрд┐рдЧрдд рдПрд▓ рдИ рдбреА рдореЗрдВ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдирд╣реАрдВ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЖрд░рдЬреАрдмреА рдореЙрдбрд▓ рдореЗрдВ рдЕрдЪреНрдЫреЗ рдЧреНрд░реЗрдбрд┐рдПрдВрдЯреНрд╕ рдмрдирд╛рдиреЗ рд╕реЗ рдХрд╛рдо рдирд╣реАрдВ рдЪрд▓реЗрдЧрд╛ - рдЖрд░рдЬреАрдмреА рд░рдВрдЧреЛрдВ рдХрд╛ рдорд┐рд╢реНрд░рдг рд╕рд╣рдЬ рд░реВрдк рд╕реЗ рд╕реНрдкрд╖реНрдЯ рдкрд░рд┐рдгрд╛рдо рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИ ( рдкреАрд▓рд╛ + рдиреАрд▓рд╛ = рдЧреНрд░реЗ , рд▓реЗрдХрд┐рди рдореИрдВ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ рд╣рд░рд╛ рд╣реЛ)ред рдПрдЪрдПрд╕рдПрд▓ рдФрд░ рдПрдЪрдПрд╕рд╡реА рдореЙрдбрд▓ рдмреЗрд╣рддрд░ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдорд╛рдирдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЧреИрд░-рдкреВрд░реНрдгрд╛рдВрдХ рдЕрдВрдХрдЧрдгрд┐рдд рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдПрдХ рдореЙрдбрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реЛрдЧрд╛ рдЬреЛ рд░рдВрдЧ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рдХреЙрдореНрдкреИрдХреНрдЯ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдлрд╝реНрд▓реЛрдЯрд┐рдВрдЧ рдкреЙрдЗрдВрдЯ рдирдВрдмрд░реЛрдВ рдФрд░ рдбрд┐рд╡реАрдЬрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдмрд┐рдирд╛ рдХрд┐рд╕реА рдЖрд░рдмреАрдЬреА рдореВрд▓реНрдпреЛрдВ рдХреЛ рдЬрд▓реНрджреА рд╕реЗ рдкрдврд╝ рд╕рдХрддрд╛ рд╣реИ - рд╣рдо рдПрдХ рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдФрд░ рд╣рдореЗрдВ рдЬрдЯрд┐рд▓ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рд╡рд┐рднрд╛рдЬрди (рджреЛ рдХреА рдЫреЛрдЯреА рд╢рдХреНрддрд┐рдпреЛрдВ рдХреЛ рдЫреЛрдбрд╝рдХрд░) ) рдФрд░ рдкреВрд░реА рддрд░рд╣ рд╕реЗ contraindicated рд╣реИред

рдирд┐рд░реНрдгрдп


рдЕрдкрдиреА рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП, рдореИрдВ рдкреНрд░рддреНрдпреЗрдХ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ (рдереЛрдбрд╝рд╛ рдореИрдЬрд┐рдХ рдирдВрдмрд░) рдХреЗ рд▓рд┐рдП рдХреБрдЫ рд╢реНрд░реЗрдгрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдПрдЪрдПрд╕рд╡реА (рдПрдЪрдПрд╕рдмреА) рдореЙрдбрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВред


рдореЙрдбрд▓ рдХрд╛ рдЧрдгрд┐рдд рдЕрдзрд┐рдХрддрдо рдЯреЛрди рдорд╛рди (рдПрдХ рдХреНрд╖реЗрддреНрд░ рдХрд╛ рдЖрдХрд╛рд░) рдХреЗ рдПрдХ рдЫрдареЗ рднрд╛рдЧ рдХреЗ рдкреВрд░реНрдгрд╛рдВрдХ рд╡рд┐рднрд╛рдЬрди рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реЛрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП, Hmax рдЕрдзрд┐рдХрддрдо рдореВрд▓реНрдп рдХреЗ рдмрд░рд╛рдмрд░ рд▓реЗрдирд╛ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ 6 * 2 ^ x , рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП 48 рдпрд╛ 96. рдпрд╣ рдЖрдкрдХреЛ рдЖрд╕рд╛рдиреА рд╕реЗ рдЖрд░рдЬреАрдмреА рд░рдВрдЧ рдХреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛, рдФрд░ 128 рд╕реЗ рдХрдо рдореВрд▓реНрдп рдЖрдкрдХреЛ рдПрдХ рдврд╛рд▓ рдмрдирд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛ рдЬрд┐рд╕рдореЗрдВ рдХрдИ рдмрд╛рд░ рдкреВрд░реНрдг рд░рдВрдЧ рдкрд╣рд┐рдпрд╛ рд╣реЛрддрд╛ рд╣реИред HSV / HSL рдореЙрдбрд▓ рдореЗрдВ рд╣реЗрдореИрдХреНрд╕ = 360 , рдПрдордПрд╕ рдкреЗрдВрдЯ рдореЗрдВ - 240, рдХреБрдЫ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдореЗрдВ - 255ред

рдЕрдзрд┐рдХрддрдо рдорд╛рдиреЛрдВ рдХрд╛ рдЪрдпрди рдХрд░рддреЗ рд╕рдордп рдмрдореИрдХреНрд╕ = 17 рдФрд░ рд╡рдореИрдХреНрд╕ = 15 рдЧреБрдгрди рдм * рд╡ рдПрдХ рдкрд░рд┐рдгрд╛рдо рд╕реАрдорд╛ рдореЗрдВ рдкрдбрд╝рд╛ рд╣реИ 0..255 ред

рдиреНрдпреВрдирддрдо рдПрдЪрдПрд╕рд╡реА рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди, рдкрд░реНрд╡рддрдорд╛рд▓рд╛ рдХреЗ рд╕рд╛рде рдЧрдгрдирд╛ рдФрд░ 8-рдмрд┐рдЯ рдореВрд▓реНрдпреЛрдВ рддрдХ рд╕реАрдорд┐рдд рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИ рдПрдЪ = 0..11 ред рдмреА = 0..17 рдФрд░ рдбрдмреНрд▓реНрдпреВ = 0..3 рд╣рдореЗрдВ рджреЗрддрд╛ рд╣реИ 12 * 18 * 4 = 864 рд░рдВрдЧ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдХреБрдЫ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рд░реВрдк рд╕реЗ рджреЛрд╣рд░рд╛рдП рдЬрд╛рддреЗ рд╣реИрдВ, рдФрд░ рдХреБрдЫ рдХрд╛рдлреА рдЕрд▓рдЧ рд╣реИрдВ ( рдирд┐рд╖реНрдкрдХреНрд╖рддрд╛ рдХреЗ рд▓рд┐рдП, рдореИрдВ рдзреНрдпрд╛рди рджреЗрддрд╛ рд╣реВрдВ рдХрд┐ рдПрдЪ рдкрд░ рдЪрд▓рдиреЗ рд╡рд╛рд▓реЗ рд╕рднреА рд░рдВрдЧ рдореЙрдбрд▓ рдореЗрдВ рдпрд╣ рдкрд╛рдк рд╣реИ - рд▓рдВрдмрд╛рдИ рдХреЛ рд╡рд┐рдХреГрдд рдХрд┐рдП рдмрд┐рдирд╛ рд╡реНрдпрд╛рдкрд╛рд░реА рдХреНрдпреВрдм рдХреЗ рддреАрди рдХрд┐рдирд╛рд░реЛрдВ рдХреЛ рдирд╣реАрдВ рдЦреАрдВрдЪ рд╕рдХрддрд╛ рд╣реИ )ред рдЖрдХреГрддрд┐ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдореЙрдиреАрдЯрд░ ( 16.7 рдорд┐рд▓рд┐рдпрди рдЕрдиреВрдареЗ рд░рдВрдЧ) рдореЗрдВ 24-рдмрд┐рдЯ рд░рдВрдЧ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрд▓реНрдк рдкреНрд░рддреАрдд рд╣реЛрддреА рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдПрд▓рдИрдбреА рдкреНрд░реЙрдкреНрд╕ рдХреЛ рд╡рд┐рд╡рд┐рдзрддрд╛ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдкрд╣рд▓реЗ рдХреЗ рдмрдЬрд╛рдп рд╕рд╛рдд рд░рдВрдЧ рдЕрдХреНрд╕рд░ рдПрдХ рдЕрдЪреНрдЫрд╛ рдмреЛрдирд╕ рдереЗред рдЗрд╕ рдореЙрдбрд▓ рдореЗрдВ рд░рдВрдЧ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рджреЛ рдмрд╛рдЗрдЯреНрд╕ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдмреЗрд╢рдХ, рдПрдЪрдПрд╕рд╡реА рдХрд╛ рд╕рдВрдХрд▓реНрдк рдПрдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рддрдХ рдмрдврд╝рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдореИрдВ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ рдбрдмреНрд▓реНрдпреВ = 0..15 рдФрд░ 96 рдЯрди, рдЬреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА 27.6 рд╣рдЬрд╛рд░ рд╢реЗрдбреНрд╕ рджреЗрддрд╛ рд╣реИред рдРрд╕реЗ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд╕рд╛рде рдирдореВрдирд╛ рдХреЛрдб (рдореЙрдбрд▓ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди - max_value, max_whiteness, sixth_hue):

рдХреЛрдб


typedef struct { uint8_t r; uint8_t g; uint8_t b; } RGB_t; typedef struct { uint8_t h; uint8_t s; uint8_t v; } HSV_t; const uint8_t max_whiteness = 15; const uint8_t max_value = 17; const uint8_t sixth_hue = 16; const uint8_t third_hue = sixth_hue * 2; const uint8_t half_hue = sixth_hue * 3; const uint8_t two_thirds_hue = sixth_hue * 4; const uint8_t five_sixths_hue = sixth_hue * 5; const uint8_t full_hue = sixth_hue * 6; inline RGB_t rgb(uint8_t r, uint8_t g, uint8_t b) { return (RGB_t) {r, g, b}; } inline HSV_t hsv(uint8_t h, uint8_t s, uint8_t v) { return (HSV_t) {h, s, v}; } const RGB_t black = {0, 0, 0}; RGB_t hsv2rgb(HSV_t hsv) { if (hsv.v == 0) return black; uint8_t high = hsv.v * max_whiteness;//channel with max value if (hsv.s == 0) return rgb(high, high, high); uint8_t W = max_whiteness - hsv.s; uint8_t low = hsv.v * W;//channel with min value uint8_t rising = low; uint8_t falling = high; uint8_t h_after_sixth = hsv.h % sixth_hue; if (h_after_sixth > 0) {//not at primary color? ok, h_after_sixth = 1..sixth_hue - 1 uint8_t z = hsv.s * uint8_t(hsv.v * h_after_sixth) / sixth_hue; rising += z; falling -= z + 1;//it's never 255, so ok } uint8_t H = hsv.h; while (H >= full_hue) H -= full_hue; if (H < sixth_hue) return rgb(high, rising, low); if (H < third_hue) return rgb(falling, high, low); if (H < half_hue) return rgb(low, high, rising); if (H < two_thirds_hue) return rgb(low, falling, high); if (H < five_sixths_hue) return rgb(rising, low, high); return rgb(high, low, falling); } 


рдкреБрдирд╢реНрдЪ
рдореИрдВрдиреЗ рдПрдХ рд╡рд┐рд╖рдп рдореЗрдВ рдПрдХ рдкреНрд░рдпреЛрдЧ рдореЗрдВ TeX рдХреЛрдб рд╢рд╛рдорд┐рд▓ рдХрд┐рдПред рдпрджрд┐ рдЗрд╕реЗ рдФрд░ рдЕрдзрд┐рдХ рдЖрд╕рд╛рдиреА рд╕реЗ рдпрд╛ рдЕрдзрд┐рдХ рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рд╣реИ - рдкреАрдПрдо рдкрд░ рд╕рдВрдХреЗрддред
рдпрджрд┐ рдпрд╣ рджрд┐рд▓рдЪрд╕реНрдк рд╣реЛрдЧрд╛, рддреЛ рдореИрдВ рдПрдЪрдПрд╕рд╡реА рдЧрдгрдирд╛ рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд╕рдордЭрд╛ рд╕рдХрддрд╛ рд╣реВрдВ, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдмрдврд╝рддреЗ / рдЧрд┐рд░рдиреЗ рд╡рд╛рд▓реЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдпрд╛рдВрддреНрд░рд┐рдХреА рдФрд░ "рдРрд╕реЗ" рдПрдЪрдПрд╕рд╡реА рдореЗрдВ рдкрд┐рдЫрдбрд╝реЗ рдЧрдгрдирд╛ рдлрд╝рдВрдХреНрд╢рдиред

Source: https://habr.com/ru/post/In166317/


All Articles