рд░рдВрдЧ рдкреИрд▓реЗрдЯ рдЬрдирд░реЗрд╢рди рдПрд▓реНрдЧреЛрд░рд┐рдердо



рд╕рд╛рдЗрдЯ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реБрдВрджрд░ рд░рдВрдЧ рдкреИрд▓реЗрдЯ рдХреА рддрд▓рд╛рд╢ рд╣реИ? рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдШрд░ рдкрд░ рдЖрд░рдЬреАрдмреА-рдмреИрдХрд▓рд╛рдЗрдЯ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдпрд╛ рдирдП рд░рдВрдЧреЛрдВ рдореЗрдВ рдХрдорд░реЗ рдХреЛ рдкреЗрдВрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ? рдпрд╛ рд░рдВрдЧ рдмреИрдХрд▓рд╛рдЗрдЯ рдХреЗ рд╕рд╛рде рдПрдХ рдХреАрдмреЛрд░реНрдб рдЦрд░реАрджрд╛ рдФрд░ рдЗрд╕реЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ? рдЖрдк рдЬрд┐рд╕ рднреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд╣реИрдВ, рдЖрдк рд░рдВрдЧ рдпреЛрдЬрдирд╛рдУрдВ рдХреЛ рд▓рдЧрд╛рддрд╛рд░ рд╕рдорд╛рдпреЛрдЬрд┐рдд рдХрд░рдирд╛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддреЗ рд╣реИрдВред

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

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

рд░рдВрдЧ рд░рд┐рдХреНрдд рд╕реНрдерд╛рди


рд╕рд┐рджреНрдзрд╛рдВрдд рд╕реЗ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред рдЖрдЬ, рд░рдВрдЧ рд╕реНрдерд╛рди рд╡реНрдпрд╛рдкрдХ рд░реВрдк рд╕реЗ рд░рдВрдЧреЛрдВ рдХреЛ рд╡рд░реНрдЧреАрдХреГрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ:

sRGB


RGB рдХрд╛ рдорддрд▓рдм Red Green Blue ред рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ: рд╡реЗ рддреАрди рд░рдВрдЧ рдЪреИрдирд▓реЛрдВ рдореЗрдВ рдкреНрд░рдХрд╛рд╢ рдХрд╛ рдЙрддреНрд╕рд░реНрдЬрди рдХрд░рддреЗ рд╣реИрдВ, рдЬреЛ рд╕рднреА рдкреНрд░рдХрд╛рд░ рдХреЗ рд░рдВрдЧреЛрдВ рдХрд╛ рдЙрддреНрдкрд╛рджрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЕрдиреБрдкрд╛рдд рдореЗрдВ рдорд┐рд╢реНрд░рд┐рдд рд╣реЛрддреЗ рд╣реИрдВред рдкреНрд░рддреНрдпреЗрдХ рдЪреИрдирд▓ рдХрд╛ рдорд╛рди 0 рд╕реЗ 255 рддрдХ рднрд┐рдиреНрди рд╣реЛрддрд╛ рд╣реИред R:0, G:0, B:0 (рдпрд╛ рд╣реЗрдХреНрд╕рд╛рдбреЗрд╕рд┐рдорд▓ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдореЗрдВ # 000000) рдХрд╛рд▓рд╛ рд╣реИ, рдФрд░ R:255, G:255, B:255 (рдпрд╛ #ffffff) ) - рд╕рдлреЗрджред

рд╕реА рд▓реИрдм


CIE рд▓реИрдм рдХрд╛ рд░рдВрдЧ рд╕реНрдерд╛рди sRGB рд╕реЗ рдЕрдзрд┐рдХ рд╡реНрдпрд╛рдкрдХ рд╣реИ рдФрд░ рдЗрд╕рдореЗрдВ рдордиреБрд╖реНрдпреЛрдВ рджреНрд╡рд╛рд░рд╛ рджреЗрдЦреЗ рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рд╕рднреА рд░рдВрдЧ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред рдпрд╣ рдзрд╛рд░рдгрд╛ рдХреА рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХрддрд╛ рдХреА рдЙрдореНрдореАрдж рдХреЗ рд╕рд╛рде рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ред рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рд░рдВрдЧреЛрдВ рдХреЗ рдмреАрдЪ рдХреА рджреВрд░реА рд╡реНрдпрдХреНрддрд┐рдкрд░рдХ рдЕрдВрддрд░ рд╕реЗ рдореЗрд▓ рдЦрд╛рддреА рд╣реИ: рдпрджрд┐ рджреЛ рд░рдВрдЧреЛрдВ рдХреЗ рдореВрд▓реНрдп рдПрдХ-рджреВрд╕рд░реЗ рдХреЗ рдХрд░реАрдм рд╣реИрдВ, рддреЛ рд╡реЗ рд╕рдорд╛рди рджрд┐рдЦрддреЗ рд╣реИрдВред рджреВрд╕рд░реА рдУрд░, рджреЛ рд░рдВрдЧ рдЬреЛ рдПрдХ рджреВрд╕рд░реЗ рд╕реЗ рдмрд╣реБрдд рджреВрд░ рд╣реИрдВ, рдЙрдиреНрд╣реЗрдВ рднреА рдкреВрд░реА рддрд░рд╣ рд╕реЗ рднрд┐рдиреНрди рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред CIE рд▓реИрдм рдореЗрдВ, рдЕрдВрдзреЗрд░реЗ рдФрд░ рдкреНрд░рдХрд╛рд╢ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рд╕рдВрддреГрдкреНрдд рд░рдВрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рд╕реНрдерд╛рди рдЖрд╡рдВрдЯрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╡реИрд╕реЗ, рдорд╛рдирд╡ рдЖрдВрдЦ рдХреЗ рд▓рд┐рдП, рдХрд╛рд▓реЗ рд╕реЗ рдмрд╣реБрдд рдЧрд╣рд░рд╛ рд╣рд░рд╛ рд▓рдЧрднрдЧ рдЕрдкреНрд░рднреЗрджреНрдп рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрд╣ рд░рдВрдЧ рд╕реНрдерд╛рди рддреАрди рдЖрдпрд╛рдореА рд╣реИ: L рдЕрд░реНрде рд╣реИ рд▓рдкрдЯ (0.0 рд╕реЗ 1.0 рддрдХ), a рдФрд░ b (рд▓рдЧрднрдЧ -1.0 рд╕реЗ 1.0) рд░рдВрдЧ рдЪреИрдирд▓ рд╣реИрдВред

рдПрдЪрд╕реАрдПрд▓


рдпрджрд┐ RGB рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдбрд┐рд╕реНрдкреНрд▓реЗ рд░рдВрдЧреЛрдВ рдХреЛ рдХреИрд╕реЗ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдФрд░ CIE рд▓реИрдм рдХреИрд╕реЗ рд╣рдо рдЙрдиреНрд╣реЗрдВ рдЕрдиреБрднрд╡ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ HCL рд╡рд╣ рд░рдВрдЧ рд╕реНрдерд╛рди рд╣реИ рдЬреЛ рд░рдВрдЧреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣рдорд╛рд░реЗ рд╡рд┐рдЪрд╛рд░ рд╕реЗ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдмрд╛рд░реАрдХреА рд╕реЗ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИред рдпрд╣ рддреНрд░рд┐-рдЖрдпрд╛рдореА рднреА рд╣реИ, H рдорддрд▓рдм hue (0 рд╕реЗ 360 рдбрд┐рдЧреНрд░реА) рд╣реИ, рдорддрд▓рдм рдХреНрд░реЛрдорд╛ рд╣реИ рдФрд░ L рдорддрд▓рдм рд╣реИ рд▓реНрдпреВрдорд┐рдиреЗрдВрд╕ (рджреЛрдиреЛрдВ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ 0.0 рд╕реЗ 1.0 рддрдХ рдорд╛рдкрд╛ рдЬрд╛рддрд╛ рд╣реИ)ред

рдореИрдВ рдЧрдгрдирд╛ рдХреЗ рд▓рд┐рдП CIE рд▓реИрдм рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП рдкреИрд▓реЗрдЯ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП HCL рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реВрдВред рдпрджрд┐ рд╡рд╛рдВрдЫрд┐рдд рд╣реИ, рддреЛ рдЖрдк рдЗрди рд╕реНрдерд╛рдиреЛрдВ рд╕реЗ рдЖрд░рдЬреАрдмреА рдореЗрдВ рдореВрд▓реНрдпреЛрдВ рдХреЛ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рд░рдВрдЧ рдЕрдВрддрд░рд┐рдХреНрд╖ рдЕрдкрдШрдЯрди


рдЪреВрдБрдХрд┐ рдореБрдЭреЗ рдЕрджреНрд╡рд┐рддреАрдп, рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░рдВрдЧреЛрдВ рдХрд╛ рдПрдХ рд╕реЗрдЯ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереА, рдкрд╣рд▓реЗ рд╣рдо рдЙрди рд▓реЛрдЧреЛрдВ рдХреЛ рдЫреЛрдбрд╝ рджреЗрддреЗ рд╣реИрдВ рдЬреЛ рдмрд╣реБрдд рд╕рдорд╛рди рджрд┐рдЦрддреЗ рд╣реИрдВред рд░рдВрдЧ рд╕реНрдерд╛рди рддреАрди-рдЖрдпрд╛рдореА рд╣реЛрдЧрд╛, рдФрд░ k- рд╕рд╛рдзрди рдХреНрд▓рд╕реНрдЯрд░рд┐рдВрдЧ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдРрд╕реЗ рдХрдо-рдЖрдпрд╛рдореА рдбреЗрдЯрд╛ рд╕реЗрдЯ рдХреЛ рдЕрд▓рдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХрджрдо рд╕рд╣реА рд╣реИред рд╡рд╣ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдХреНрд╖реЗрддреНрд░реЛрдВ рдореЗрдВ рдбреЗрдЯрд╛ (рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд░рдВрдЧ рд╕реНрдерд╛рди) рдХреЛ рд╡рд┐рдШрдЯрд┐рдд рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реИред рдФрд░ рдлрд┐рд░ рдкреИрд▓реЗрдЯ рдХреЛ рдЗрди рдХреНрд╖реЗрддреНрд░реЛрдВ рдореЗрдВ рд╕рдореВрд╣реЛрдВ рдХреЗ рдХреЗрдВрджреНрд░реАрдп рдмрд┐рдВрджреБрдУрдВ рд╕реЗ рдЗрдХрдЯреНрдард╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЬрд┐рдл CIE рд▓реИрдм рдХреЗ рддреНрд░рд┐-рдЖрдпрд╛рдореА рдЕрдВрддрд░рд┐рдХреНрд╖ рдореЗрдВ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХрд╛ рдПрдХ рджреЛ-рдЖрдпрд╛рдореА рдкреНрд░рджрд░реНрд╢рди рджрд┐рдЦрд╛рддрд╛ рд╣реИред

рдПрдХ рдХреЛрдб рд▓рд┐рдЦрдирд╛


рдЧреЛ рдкрд░ рд▓рд╛рдЧреВ рдХрд┐рдП рдЧрдП k- рд╕рд╛рдзрди рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдХреЛрдб рдХреА рдХреБрдЫ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдореЗрдВ рд╕рдорд╕реНрдпрд╛ рд╣рд▓ рд╣реЛ рдЬрд╛рддреА рд╣реИред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, CIE рд▓реИрдм рд╕реНрдерд╛рди рдореЗрдВ рд░рдВрдЧ рдорд╛рди рддреИрдпрд╛рд░ рдХрд░реЗрдВ:

 var d clusters.Observations for l := 0.2; l <= 0.8; l += 0.05 { for a := -1.0; a < 1.0; a += 0.1 { for b := -1.0; b < 1.0; b += 0.1 { d = append(d, clusters.Coordinates{l, a, b}) } } } 

рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рд╣реА рдХреБрдЫ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рдЪреБрдирд╛ рдФрд░ рдЙрддреНрдкрдиреНрди рд░рдВрдЧреЛрдВ рдкрд░ рдХреБрдЫ рдкреНрд░рддрд┐рдмрдВрдз рд▓рдЧрд╛рдПред рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рд╣рдо рд░рдВрдЧреЛрдВ рдХреЛ рдмрд╣реБрдд рдЧрд╣рд░рд╛ (рдЪрдордХ <0.2) рдФрд░ рдмрд╣реБрдд рдЙрдЬреНрдЬреНрд╡рд▓ (рдЪрдордХ> 0.8) рдмрд╛рд╣рд░ рдлреЗрдВрдХ рджреЗрдВрдЧреЗред

рдирд╡ рдирд┐рд░реНрдорд┐рдд рд░рдВрдЧ рд╕реНрдерд╛рди рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░реЗрдВ:

 km := kmeans.New() clusters, _ := km.Partition(d, 8) 

Partition рдлрд╝рдВрдХреНрд╢рди рдЖрда рд╕рдореВрд╣реЛрдВ рдХреЗ рд╕реНрд▓рд╛рдЗрд╕ рд▓реМрдЯрд╛рдПрдЧрд╛ред рдкреНрд░рддреНрдпреЗрдХ рдХреНрд▓рд╕реНрдЯрд░ рдореЗрдВ рдПрдХ Center рдмрд┐рдВрджреБ рд╣реЛрддрд╛ рд╣реИ, рдЬреЛ рдХрд┐рд╕реА рджрд┐рдП рдЧрдП рд╕реНрдерд╛рди рдореЗрдВ рдПрдХ рдЕрд▓рдЧ рд░рдВрдЧ рд╣реЛрддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдЖрд╕рд╛рдиреА рд╕реЗ рдПрдХ рд╣реЗрдХреНрд╕рд╛рдбреЗрд╕рд┐рдорд▓ рдЖрд░рдЬреАрдмреА рдорд╛рди рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ:

 col := colorful.Lab(c.Center[0], c.Center[1], c.Center[2]) col.Clamped().Hex() 

рдпрд╛рдж рд░рдЦреЗрдВ рдХрд┐ CIE рд▓реИрдм RGB рд╕реЗ рд╡реНрдпрд╛рдкрдХ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдХреБрдЫ рд▓реИрдм рдорд╛рди RGB рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдирд╣реАрдВ рдХрд┐рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред рдЖрд░рдЬреАрдмреА рдЕрдВрддрд░рд┐рдХреНрд╖ рдореЗрдВ рдирд┐рдХрдЯрддрдо рд░рдВрдЧреЛрдВ рдХреЗ Clamped рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрди рдореВрд▓реНрдпреЛрдВ рдХреЛ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдкреВрд░реНрдг рдХреЛрдб


 package main import ( "github.com/muesli/kmeans" "github.com/muesli/clusters" colorful "github.com/lucasb-eyer/go-colorful" ) func main() { // Create data points in the CIE L*a*b* color space // l for lightness, a & b for color channels var d clusters.Observations for l := 0.2; l <= 0.8; l += 0.05 { for a := -1.0; a <= 1.0; a += 0.1 { for b := -1.0; b <= 1.0; b += 0.1 { d = append(d, clusters.Coordinates{l, a, b}) } } } // Partition the color space into 8 clusters km := kmeans.New() clusters, _ := km.Partition(d, 8) for _, c := range clusters { col := colorful.Lab(c.Center[0], c.Center[1], c.Center[2]) fmt.Println("Color as Hex:", col.Clamped().Hex()) } } 

рдЗрд╕ рдХреЛрдб рджреНрд╡рд╛рд░рд╛ рдЙрддреНрдкрдиреНрди рдЖрда (рдРрд╕рд╛ рдирд╣реАрдВ) рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд░рдВрдЧреЛрдВ рдХрд╛ рдПрдХ рд╕реЗрдЯ:



рдЕрдкрдиреЗ рдЦреБрдж рдХреЗ рд░рдВрдЧ рд╕реНрдерд╛рди рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдВ


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

 func pastel(c colorful.Color) bool { _, s, v := col.Hsv() return 0.2 <= s && s <= 0.4 && 0.7 <= v && v <= 1.0 } for l := 0.0; l <= 1.0; l += 0.05 { for a := -1.0; a <= 1.0; a += 0.1 { for b := -1.0; b <= 1.0; b += 0.1 { col := colorful.Lab(l, a, b) if col.IsValid() && pastel(col) { d = append(d, clusters.Coordinates{l, a, b}) } } } } 

рдПрдХ рдЕрдиреНрдп рд░рдВрдЧ рдЕрдВрддрд░рд┐рдХреНрд╖ рдПрдЪрдПрд╕рд╡реА рд╣реИ , рдирд╛рдо рдореЗрдВ рдЕрдХреНрд╖рд░ рд╣реНрдпреВ, рд╕рдВрддреГрдкреНрддрд┐ рдФрд░ рдЪрдордХ рдХрд╛ рдорддрд▓рдм рд╣реИред рдЗрд╕ рдЕрдВрддрд░рд┐рдХреНрд╖ рдореЗрдВ, рдкреЗрд╕реНрдЯрд▓ рд░рдВрдЧреЛрдВ рдореЗрдВ рдЖрдорддреМрд░ рдкрд░ рдЙрдЪреНрдЪ рдЪрдордХ рдФрд░ рдХрдо рд╕рдВрддреГрдкреНрддрд┐ рд╣реЛрддреА рд╣реИред

рдпрд╣рд╛рдБ рдХреНрдпрд╛ рд╣реБрдЖ:



рдЖрдк "рд╕рдВрддреГрдкреНрдд" рдЯреЛрди рдХрд╛ рдПрдХ рд╕реЗрдЯ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдирдХреА рд╕рдВрддреГрдкреНрддрд┐ (рдХреНрд░реЛрдорд╛) рдФрд░ рдЪрдордХ рджреНрд╡рд╛рд░рд╛ рд░рдВрдЧреЛрдВ рдХреЛ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

 func warm(col colorful.Color) bool { _, c, l := col.Hcl() return 0.1 <= c && c <= 0.4 && 0.2 <= l && l <= 0.5 } 

рдкрд░рд┐рдгрд╛рдо:



рдЧрдордЯ рдкреИрдХреЗрдЬ


рдореИрдВ рдПрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдкрд░ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдЬрд┐рд╕реЗ рд╕рд░рдЧрдо рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдпрд╣рд╛рдВ рд╡рд░реНрдгрд┐рдд рд╕рднреА рдЯреБрдХрдбрд╝реЛрдВ рдХреЛ рдЧреЛ рдкрд░ рдПрдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдкреИрдХреЗрдЬ рдореЗрдВ рдПрдХрддреНрд░ рдХрд░реЗрдЧрд╛, рдЬреЛ рдЖрдкрдХреЛ рд░рдВрдЧ рдкрдЯреНрдЯрд┐рдпрд╛рдБ рдФрд░ рдереАрдо рдмрдирд╛рдиреЗ рдФрд░ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдЖрдк рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЗрд╕реЗ рдЖрдЬрд╝рдорд╛ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рдЕрднреА рднреА рдХрд╛рдо рдореЗрдВ рд╣реИред

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


All Articles