рдЕрдВрддрд┐рдо рдкрд░рд┐рдгрд╛рдо рдХреА рд╕реНрдХреНрд░реАрдирдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рдореИрдВ рдмрд╛рдд рдХрд░рддрд╛ рд╣реВрдВ рдХрд┐ рдореИрдВрдиреЗ рдЕрдкрдиреА рд╡реНрдпрдХреНрддрд┐рдЧрдд рдмрд╛рдЗрдХ рдХрд╛ рдЖрд╡рд┐рд╖реНрдХрд╛рд░ рдХреИрд╕реЗ рдХрд┐рдпрд╛, рдЬреЛ рдХрд┐ рдлрд╝реЛрдЯреЛрд╢реЙрдк рдореЗрдВ рд▓рдЧрднрдЧ рдврд╛рд▓ рдЬреИрд╕рд╛ рд╣реИред рдореИрдВ рдЖрдкрдХреЛ рддреБрд░рдВрдд рдЪреЗрддрд╛рд╡рдиреА рджреЗрддрд╛ рд╣реВрдВ, рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдмрд╣реБрдд рдзреАрдорд╛ рдФрд░ рдЕрдбреЙрдкреНрдЯреЗрдб рд╣реИред рдЕрдиреБрдХреВрд▓рди рдФрд░ рдХреБрдЫ рд▓реЛрдХрдкреНрд░рд┐рдп рдврд╛рд▓ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдирд╛ рдЬреЛ рдореИрдВ рд▓реЗрдЦ рдХреЗ рджреВрд╕рд░реЗ рднрд╛рдЧ рдореЗрдВ рдХрд░рдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реВрдВ
рдХреНрдпреЛрдВ?
рдХрд┐рд╕реА рддрд░рд╣, рдореИрдВ рдЧреНрд░реЗрдбрд┐рдПрдВрдЯреНрд╕ рдХреЗ рдПрдХ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рд░реЗрдВрдбрд░рд┐рдВрдЧ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ рдЬреЛ рдлрд╝реЛрдЯреЛрд╢реЙрдк рдХреЗ рд╕рдорд╛рди рд╣реЛред рдореЗрд░реЗ рдкрд╛рд╕ рдХреЛрдИ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд▓рдХреНрд╖реНрдп рдирд╣реАрдВ рдерд╛, рдЗрд╕рд▓рд┐рдП, рд╢рд╛рдо рдХреЗ рд▓рд┐рдП рдПрдХ рджрд┐рд▓рдЪрд╕реНрдк рдХрд╛рд░реНрдпред рдЬрд╛рд╡рд╛ рдХреЛ рднрд╛рд╖рд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдЪреБрдирд╛ рдЧрдпрд╛ рдерд╛ред рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╡рд┐рдЪрд╛рд░ рдпрд╣ рдерд╛ рдХрд┐ рдореИрдВ рдЗрд╕ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЛ рдЕрдкрдиреЗ рджрдо рдкрд░ рд▓рд┐рдЦрдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛, рдмрд┐рдирд╛ рджреВрд╕рд░реЗ рд▓реЛрдЧреЛрдВ рдХреЗ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдореЗрдВ рдЭрд╛рдБрдХреЗред
рдХреНрдпрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдерд╛
DrawGradient () рд╡рд┐рдзрд┐ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП: рд╣рдо рджреЛ рдмрд┐рдВрджреБрдУрдВ рдХреЗ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдФрд░ рд░рдВрдЧреЛрдВ рдХреЛ рд╕реЗрдЯ рдХрд░рддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдХреЗ рдмрд╛рдж рдкреВрд░реА рдЫрд╡рд┐ рдкрд░ рдПрдХ рдврд╛рд▓ рдЦреАрдВрдЪрд╛ рдЬрд╛рддрд╛ рд╣реИред рдХреБрдЫ рдЗрд╕ рддрд░рд╣:

рдЗрд╕ рдЖрдХреГрддрд┐ рдореЗрдВ, рдмрд┐рдВрджреБ A рдореЗрдВ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ (55; 20) рдФрд░ рд░рдВрдЧ 0xff2e2e2e рд╣реИ, рдФрд░ рдмрд┐рдВрджреБ B рдореЗрдВ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ (175, 180) рдФрд░ рд░рдВрдЧ 0xffb5b5b5 рд╣реИред рдпрд╣ рдордд рднреВрд▓реЛ рдХрд┐ рдореВрд▓ рдКрдкрд░реА рдмрд╛рдПрдВ рдХреЛрдиреЗ рдореЗрдВ рд╣реИ, рдФрд░ рд╡рд╛рдИ рдЕрдХреНрд╖ рдиреАрдЪреЗ рдирд┐рд░реНрджреЗрд╢рд┐рдд рд╣реИред
рд╕рдордЭрдирд╛ рд╢реБрд░реВ рдХрд░реЛ
рдПрдХ рд╕рдВрджрд░реНрдн рдХреЗ рд░реВрдк рдореЗрдВ, рдореИрдВрдиреЗ рдкрд┐рдЫрд▓реЗ рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рд╕реЗ рдлрд╝реЛрдЯреЛрд╢реЙрдк рд╕реЗ тАЛтАЛрдЧреНрд░реЗрдбрд┐рдПрдВрдЯ рд▓рд┐рдпрд╛ред рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдврд╛рд▓ рдореЗрдВ рддреАрди рднрд╛рдЧ рд╣реЛрддреЗ рд╣реИрдВ:

рд▓рд╛рд▓ рднрд╛рдЧ рдХреЛ рдмрд┐рдВрджреБ A рдХреЗ рд░рдВрдЧ рд╕реЗ рднрд░рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рд╣рд░реЗ рднрд╛рдЧ рдХреЛ рдмрд┐рдВрджреБ B рд╕реЗ рднрд░рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдФрд░ рд╢реЗрд╖ рдХреНрд╖реЗрддреНрд░ рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рдкрд┐рдХреНрд╕реЗрд▓ рдХреЗ рд░рдВрдЧ рдХреА рдЧрдгрдирд╛ рд▓рд╛рдЗрдиреЛрдВ рд╕реЗ c рдФрд░ d рдХреА рджреВрд░реА рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдХреА рдЬрд╛рдиреА рдЪрд╛рд╣рд┐рдПред
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рд╣рдореЗрдВ рдПрдХ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬреЛ рдХрд┐рд╕реА рднреА рдкрд┐рдХреНрд╕реЗрд▓ рд╕реЗ рд▓рд╛рдЗрдиреЛрдВ рд╕реА рдФрд░ рдбреА рддрдХ рдХреА рджреВрд░реА рдХрд╛ рдирд┐рд░реНрдзрд╛рд░рдг рдХрд░реЗрдЧрд╛ред рдЖрдкрдХреЛ рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рднреА рдПрдХ рддрд░реАрдХрд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдХреМрди рд╕рд╛ рдкрд┐рдХреНрд╕реЗрд▓ "рд░реЗрдб" рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рд╣реИ, рдЬреЛ "рдЧреНрд░реАрди" рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рд╣реИ, рдФрд░ рдЬреЛ рд╢реЗрд╖ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рд╣реИред
рд╕реНрдХреВрд▓ рдЬреНрдпрд╛рдорд┐рддрд┐ рдкрд╛рдареНрдпрдХреНрд░рдо рдХреЛ рдпрд╛рдж рдХрд░реЗрдВ рдФрд░ рдПрдХ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдкрд┐рдХреНрд╕реЗрд▓ E рдХреЗ рд▓рд┐рдП рдирд┐рдореНрди рдЪрд┐рддреНрд░рдг рдмрдирд╛рдПрдВ:

рдЗрд╕ рдЖрдВрдХрдбрд╝реЗ рдореЗрдВ, AF рдкрд┐рдХреНрд╕реЗрд▓ E рд╕реЗ рд▓рд╛рдЗрди A рдХреА рджреВрд░реА рд╣реИред рдФрд░, рддрджрдиреБрд╕рд╛рд░, рдПрдлрдмреА рд▓рд╛рдЗрди рдмреА рдХреА рджреВрд░реА рд╣реИред рдпрд╣ рдЗрди рджреВрд░реА рд╣реИ рдЬреЛ рдкрд┐рдХреНрд╕реЗрд▓ рдХреЗ рд░рдВрдЧ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░реЗрдЧрд╛ред рдФрд░ рдлрд┐рд░ рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреА рд╕рдорд╕реНрдпрд╛ рд╣реИ рдХрд┐ рдкрд┐рдХреНрд╕реЗрд▓ рдХрд┐рд╕ рдХреНрд╖реЗрддреНрд░ рд╕реЗ рдЬреБрдбрд╝рд╛ рд╣реИред рдпрд╣рд╛рдВ рд╕рдм рдХреБрдЫ рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИред рдпрджрд┐ AF + FB> AB, рддреЛ рдкрд┐рдХреНрд╕реЗрд▓ рд▓рд╛рд▓ рдпрд╛ рд╣рд░реЗ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рд╕реНрдерд┐рдд рд╣реИред рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдПрдПрдл рдФрд░ рдПрдлрдмреА рдореЗрдВ рд╕реЗ рдХрд┐рд╕ рдХреА рддреБрд▓рдирд╛ рдХрд░реЗрдВред рдпрджрд┐ AF> FB, рддреЛ рдкрд┐рдХреНрд╕реЗрд▓ рдЧреНрд░реАрди рдЬрд╝реЛрди рдореЗрдВ рд╣реИ, рдЕрдиреНрдпрдерд╛ рд▓рд╛рд▓ рд░рдВрдЧ рдореЗрдВред рдпрд╣рд╛рдВ рдЧрдгрд┐рдд рд╣реИред
рддреЛ, рд╣рдорд╛рд░рд╛ рдХрд╛рдо рд╡рд╛рдпреБрд╕реЗрдирд╛ рдФрд░ рдмреАрдПрдл рдХреЛ рдвреВрдВрдврдирд╛ рд╣реИред рд╣рдо рд╡рд╛рдпреБрд╕реЗрдирд╛ рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдкрд╛рдЗрдерд╛рдЧреЛрд░рд╕ рдкреНрд░рдореЗрдп рджреНрд╡рд╛рд░рд╛ рдпрд╣ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐:

рдЗрд╕рд▓рд┐рдП, рд╣рдо рд╕рдорд╛рди рдкрд╛рдЗрдерд╛рдЧреЛрд░рд╕ рдкреНрд░рдореЗрдп рд╕реЗ рд▓рдВрдмрд╛рдИ рдХрд╛ рд╡рд░реНрдЧ AE рд╕реАрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рд╣рдо рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдЕрдВрдХ A рдФрд░ E. рдХреЗ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИрдВ:

рдпрд╣ рдХреЗрд╡рд▓ рдИрдПрдл рдХреЛ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдмрдиреА рд╣реБрдИ рд╣реИред рдпрд╣ рдереЛрдбрд╝рд╛ рдХрдард┐рди рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдареАрдХ рд╣реИред рдЪреВрдБрдХрд┐ рд╣рдорд╛рд░рд╛ рдЦрдВрдб EF рддреНрд░рд┐рднреБрдЬ рдХреА рдКрдБрдЪрд╛рдИ рд╣реИ, рдЬреЛ AB рдХреА рдУрд░ рдиреАрдЪрд╛ рд╣реИ, рдКрдБрдЪрд╛рдИ рдЦреЛрдЬрдиреЗ рдХрд╛ рд╕реВрддреНрд░ рд╣рдорд╛рд░реА рд╕рд╣рд╛рдпрддрд╛ рдХрд░реЗрдЧрд╛ред рдпрд╣ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:

рдФрд░ рдкреА рд╕рдмрд╕реЗ рднреНрд░рд╛рдордХ рдЪреАрдЬреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИред рдпрд╣ рдПрдХ рдкрд░рд┐рдзрд┐ рдирд╣реАрдВ рд╣реИ, рдмрд▓реНрдХрд┐ рдПрдХ рдЕрд░реНрдз-рдкрд░рд┐рдзрд┐ рд╣реИред рдореБрдЭреЗ рдпрд╛рдж рд╣реИ рдХрд┐ рдореИрдВрдиреЗ рдХрдИ рдмрд╛рд░ рд╕реНрдХреВрд▓ рдореЗрдВ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдлреЗрд▓ рдХрд┐рдпрд╛ред рдРрд╕рд╛ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ:

рд╣рдо рдПрдмреА рдФрд░ рдИрдмреА рдХреА рдЧрдгрдирд╛ рдЙрд╕реА рддрд░рд╣ рдХрд░рддреЗ рд╣реИрдВ рдЬреИрд╕реЗ рдХрд┐ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдПрдИ -ред
рддреЛ, рд╡рд╛рдпреБрд╕реЗрдирд╛ рдЧрдгрдирд╛ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдПрдХ рдирдЬрд╝рд░ рдореЗрдВ рд╣реИ:
1. рд╣рдо рдПрдИ, рдИрдмреА рдФрд░ рдПрдмреА рдХреА рдЧрдгрдирд╛ рдХрд░рддреЗ рд╣реИрдВ
2. рд╣рдо рдкреА рдХреА рдЧрдгрдирд╛ рдХрд░рддреЗ рд╣реИрдВ
3. рдИрдПрдл рдХреА рдЧрдгрдирд╛ рдХрд░реЗрдВ
4. рд╣рдо рд╡рд╛рдпреБрд╕реЗрдирд╛ рдХреА рдЧрдгрдирд╛ рдХрд░рддреЗ рд╣реИрдВ
рдмреАрдПрдл рдХреЗ рд▓рд┐рдП рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рд╕рдорд╛рди рд╣реИ, рдореИрдВ рдЗрд╕рдХрд╛ рд╡рд░реНрдгрди рдирд╣реАрдВ рдХрд░реВрдВрдЧрд╛ред
рдпрд╣ рдЪрд╛рд░реЛрдВ рдУрд░ рдкрд╛рдиреЗ рдХрд╛ рд╕рдордп рд╣реИ!
рдореИрдВрдиреЗ рдПрдХ рд╡рд░реНрдЧ рдмрдирд╛рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛, рдЬреЛ рдмрдлрд╝рд░рдореИрдбрдо рдХреЗ рд▓рд┐рдП рдПрдХ рд░реИрдкрд░ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддрд╛ рд╣реИ, рдЖрдЗрдП рдЗрд╕реЗ рдПрдбрд┐рдЯреЗрдмрд▓рдореИрдЬ рдХрд╣рддреЗ рд╣реИрдВред рдФрд░ рдЗрд╕ рд╡рд░реНрдЧ рдореЗрдВ, рдореЗрд░реЗ рдЕрдиреБрдорд╛рдиреЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдирд┐рдореНрди рд╡рд┐рдзрд┐рдпрд╛рдБ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП:
EditableImage(int width, int height);
рдЗрд╕рдХреЗ рдмрд╛рдж, рдореЗрд░реЗ рдХреЛрдб рдХреЗ рд╕рднреА рд░рдВрдЧ int рдХреЗ рд░реВрдк рдореЗрдВ рд╕реЗрдЯ рдХрд┐рдП рдЧрдП рд╣реИрдВ, рдЬрд┐рд╕рдореЗрдВ рдирд┐рдореНрди рд░реВрдк рд╣реИрдВ:
0xAARRGGBB AA - ( 32 ) RR - GG - BB -
рдХрдХреНрд╖рд╛ рдХреЗ рд╕рд╛рде рдпрд╣ рд╡рд┐рдЪрд╛рд░ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ рдХрд┐ рдЕрдЧрд░ рдореИрдВ рдмрд╛рдж рдореЗрдВ рдврд╛рд▓ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдХреБрдЫ рдЕрдиреНрдп рдЪрд┐рдкреНрд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рддреЛ рдпрд╣ рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реЛрдЧрд╛ред
рдЖрдЗрдП рд╕рд╣рд╛рдпрдХ рдЯреБрдХрдбрд╝реЛрдВ рд╕реЗ рд╢реБрд░реВ рдХрд░реЗрдВ рдЬреЛ рдХрд┐ рдврд╛рд▓ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдирд╣реАрдВ рд╣реИрдВ
Gradient.java - рдХрд╛рд░реНрдпрдХреНрд░рдо рдкреНрд░рд╡реЗрд╢ рдмрд┐рдВрджреБ package ru.idgdima.gradient; import javax.swing.*; public class Gradient { public static final int IMG_WIDTH = 640; public static final int IMG_HEIGHT = 480; private static GradientPanel panel;
GradientPanel.java - рдкреИрдирд▓ рдЬрд┐рд╕ рдкрд░ рдЧреНрд░реЗрдбрд┐рдПрдВрдЯ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ package ru.idgdima.gradient; import javax.swing.*; import java.awt.*; import java.awt.image.BufferedImage; public class GradientPanel extends JPanel { private BufferedImage image; public GradientPanel(int width, int height) {
EditableImage.java - рд╕рдмрд╕реЗ рджрд┐рд▓рдЪрд╕реНрдк рд╡рд░реНрдЧ, рдЧреНрд░реЗрдбрд┐рдПрдВрдЯ рдХреЗ рд▓рд┐рдП рд╡рд┐рдзрд┐ рдЕрднреА рднреА рдЦрд╛рд▓реА рд╣реИ package ru.idgdima.gradient; import java.awt.image.BufferedImage; public class EditableImage { private int width; private int height; private int[] rgb;
рдпрд╣ рдХрд╛рд░реНрдпрдХреНрд░рдо рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЗрд╕ рд╕реНрддрд░ рдкрд░ рд╕рдВрдХрд▓рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рд╣рдореЗрдВ рд╕рд┐рд░реНрдл рдПрдХ рдХрд╛рд▓реА рддрд╕реНрд╡реАрд░ рджрд┐рдЦрд╛рдПрдЧрд╛ред рдпрд╣ рдврд╛рд▓ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рдзрд┐ рд▓рд┐рдЦрдиреЗ рдХрд╛ рд╕рдордп рд╣реИ!
рдореБрдЭреЗ рдпрд╣ рдЗрд╕ рддрд░рд╣ рдорд┐рд▓рд╛:
drawGradient public void drawGradient(int x1, int y1, int color1, int x2, int y2, int color2) { float dx = x1 - x2;
рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдореИрдВ рдореЙрдбреНрдпреВрд▓ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ - Math.abs () рдЬрд╣рд╛рдВ рдХрд╣реАрдВ рднреА рдХрдо рд╕реЗ рдХрдо рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ рдХрд┐ рдПрдХ рдирдХрд╛рд░рд╛рддреНрдордХ рд╕рдВрдЦреНрдпрд╛ рд╡рд░реНрдЧрдореВрд▓ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдЧрд┐рд░ рд╕рдХрддреА рд╣реИ - Math.sqrt ()ред рдЕрдиреНрдпрдерд╛, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХрд▓рд╛рдХреГрддрд┐рдпрд╛рдВ рд╣реЛрдВрдЧреАред
рдФрд░ рдЗрд╕ рдкрдВрдХреНрддрд┐ рдореЗрдВ рдпрджрд┐ рдЖрдк рд╣рдЯрд╛рддреЗ рд╣реИрдВ
- 0.1f
, рдпрд╣ рд╕рд┐рд░реНрдл рдПрдХ рднрдпрд╛рдирдХ рдЧрдбрд╝рдмрдбрд╝ рдирд┐рдХрд▓рд╛ред рдЧрдгрдирд╛ рддреНрд░реБрдЯрд┐ рдХреЗ рдХрд╛рд░рдг, рд╣рдореЗрдВ рдПрдХ рдЫреЛрдЯреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдШрдЯрд╛рдирд╛ рд╣реЛрдЧрд╛:
if (AF + BF - 0.1f > AB) {
рдпрд╣ рдХреЗрд╡рд▓ рдкреНрд░рдХреНрд╖реЗрдк рд╡рд┐рдзрд┐ рдХреЛ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдмрдиреА рд╣реБрдИ рд╣реИ рдФрд░ рдмрд╛рдд рдЯреЛрдкреА рдореЗрдВ рд╣реИред рдЗрд╕реЗ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд░рдВрдЧ, рдЕрдВрддрд┐рдо рд░рдВрдЧ рдФрд░ рд╕рдВрдЦреНрдпрд╛ рдХреА рдкреНрд░рдЧрддрд┐ рд▓реЗрдиреА рдЪрд╛рд╣рд┐рдП, рдЬреЛ 0 рд╕реЗ 1 рддрдХ рд╣реЛ рд╕рдХрддреА рд╣реИ рдФрд░ рдЬреЛ рдкреНрд░рддреНрдпреЗрдХ рд░рдВрдЧ рдХреЗ рдЕрдиреБрдкрд╛рдд рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддреА рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рдкреНрд░рдЧрддрд┐ = 0, рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд░рдВрдЧ рд╡рд╛рдкрд╕ рдЖ рдЧрдпрд╛ рд╣реИ, рдпрджрд┐ рдкреНрд░рдЧрддрд┐ = 1 рдЕрдВрддрд┐рдо рд░рдВрдЧ рд╣реИ, рдФрд░ рдпрджрд┐ рдкреНрд░рдЧрддрд┐ = 0.5 рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдФрд░ рдЕрдВрддрд┐рдо рдХреЗ рдмреАрдЪ рдХрд╛ рдФрд╕рдд рд░рдВрдЧ рд╣реИред рдХрд╛рд░реНрдп рд╕реНрдкрд╖реНрдЯ рд╣реИ, рд╡рд┐рдзрд┐ рд▓рд┐рдЦреА рдЧрдИ рд╣реИ:
рд▓рдЧрд╛рдирд╛ private int interpolate(int color1, int color2, float progress) {
рдЖрдЗрдП рдкрд░рд┐рдгрд╛рдо рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВ!

рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЦрд░рд╛рдм рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдорд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рд░реИрдЦрд┐рдХ рдкреНрд░рдХреНрд╖реЗрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдлрд╝реЛрдЯреЛрд╢реЙрдк рдореЗрдВ рдпрд╣ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдХреБрдЫ рдЕрдиреНрдп рдЙрдкрдпреЛрдЧ рдореЗрдВ рд╣реИред
рдкреНрд░рдХреНрд╖реЗрдк рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ
рддрд╕реНрд╡реАрд░ рдХреЛ рдзреНрдпрд╛рди рд╕реЗ рджреЗрдЦреЗрдВред рдмрд╛рдИрдВ рдврд╛рд▓ рд╣рдорд╛рд░реЗ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо, рджрд╛рдИрдВ рдУрд░ - рдлрд╝реЛрдЯреЛрд╢реЙрдк рджреНрд╡рд╛рд░рд╛ рддреИрдпрд╛рд░ рдХреА рдЧрдИ рд╣реИред рдкреНрд░рддреНрдпреЗрдХ рдкрдВрдХреНрддрд┐ рдореЗрдВ рдПрдХ рд▓рд╛рд▓ рдмрд┐рдВрджреБ рд╣реЛрддрд╛ рд╣реИред рдФрд░ рд░реЗрдЦрд╛ рдЬрд┐рддрдиреА рдЧрд╣рд░реА рд╣реЛрдЧреА, рдмрд╛рдИрдВ рдУрд░ рдмрд┐рдВрджреБ:

рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рд╣рдорд╛рд░реА рд▓рд╛рдЗрди рдПрдХ рд░реЗрд▓ рдХреА рддрд░рд╣ рд╕реАрдзреА рд╣реИред рдЗрд╕реЗ рдареАрдХ рдХрд░рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИред рдпрд╣рд╛рдБ рдореИрдВрдиреЗ рдХреБрдЫ рднреА рд╕рдордЭрджрд╛рд░ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдФрд░ рдЗрдВрдЯрд░рдиреЗрдЯ рдкрд░ рдЬрд╛рд╕реВрд╕реА рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред рдореБрдЭреЗ рд╣рдм рдкрд░ рдПрдХ рд▓реЗрдЦ рдорд┐рд▓рд╛, рдЬрд┐рд╕рдореЗрдВ рдХреБрдЫ рдкреНрд░рдХрд╛рд░ рдХреЗ рдкреНрд░рдХреНрд╖реЗрдк рдХрд╛ рд╡рд░реНрдгрди рд╣реИ, рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдХреЛрдб рд╣реИ:
habrahabr.ru/post/142592рдареАрдХ рд╣реИ, рд╣рдо рдХреЛрд╕рд╛рдЗрди рдкреНрд░рдХреНрд╖реЗрдк рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВ! рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, EditableImage рд╡рд░реНрдЧ рдореЗрдВ рджреЛ рд╕реНрдерд┐рд░рд╛рдВрдХ рдЬреЛрдбрд╝реЗрдВ:
public static final int INTERPOLATION_LINEAR = 0; public static final int INTERPOLATION_COS = 1;
рджреВрд╕рд░реЗ, рд╣рдо рдкреНрд░рдХреНрд╖реЗрдк рд╡рд┐рдзрд┐ рдХреЛ рдереЛрдбрд╝рд╛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рдЗрдирдореЗрдВ рд╕реЗ рдПрдХ рд╕реНрдерд┐рд░рд╛рдВрдХ рдХреЛ рдЦрд┐рд▓рд╛рдпрд╛ рдЬрд╛рдП:
рдЫрд┐рдкрд╛ рд╣реБрдЖ рдкрд╛рда private int interpolate(int color1, int color2, float progress, int interpolation) {
рдлрд┐рд░, рдбреНрд░реЙрдбреНрд░рд┐рдПрдб рдореЗрдердб рдкреИрд░рд╛рдореАрдЯрд░реНрд╕ рдХреА рд╕реВрдЪреА рдореЗрдВ
int interpolation
рдХрд░реЗрдВ рдФрд░ рдЗрдВрдЯрд░рдкреЛрд▓реЗрдЯ рдореЗрдердб рдХреЙрд▓ рд▓рд╛рдЗрди рдореЗрдВ рдЗрд╕ рд╡реЗрд░рд┐рдПрдмрд▓ рдХреЛ рдЬреЛрдбрд╝реЗрдВ:
rgb[y * width + x] = interpolate(color1, color2, progress , interpolation);
рдФрд░ рдЕрдВрдд рдореЗрдВ, рдЧреНрд░реЗрдбрд┐рдПрдВрдЯрдкреИрдирд▓ рдХреНрд▓рд╛рд╕ рдореЗрдВ, рд╣рдо рдбреНрд░реЙрдЧреНрд░реЗрдбрд┐рдПрдВрдЯ рдХреЛ рдХреЙрд▓ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрддреЗ рд╣реИрдВ, рдЗрд╕рдореЗрдВ INTERPOLATION_COS рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ
рдпрд╣рд╛рдБ рдЗрд╕ рдкреНрд░рдХреНрд╖реЗрдк рд╡рд┐рдзрд┐ рдХреЗ рд╕рд╛рде рдХреНрдпрд╛ рд╣реБрдЖ рд╣реИ:

рд╣рдореНрдо, рдпрд╣ рдЕрдЪреНрдЫрд╛ рд▓рдЧ рд░рд╣рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдлрд╝реЛрдЯреЛрд╢реЙрдк рдореЗрдВ рд▓рд╛рдЗрди рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд╡рд╣ рд╡рдХреНрд░ рдирд╣реАрдВ рд╣реИред рдХреНрдпрд╛ рдХрд░реЗрдВ? рдпрд╣ рдмрд╣реБрдд рд╕реАрдзрд╛ рд╣реИ, рдпрд╣ рдмрд╣реБрдд рдЯреЗрдврд╝рд╛ рд╣реИ ... рдФрд░ рдЕрдЧрд░ рд╣рдо рдЗрди рджреЛ рдЪрд░рдо рд╕реАрдорд╛рдУрдВ рдХреЗ рдмреАрдЪ рдореЗрдВ рдмрдирд╛рддреЗ рд╣реИрдВ рддреЛ рдХреНрдпрд╛ рд╣реЛрдЧрд╛?
рдорд╣рд╛рди рд╡рд┐рдЪрд╛рд░, рдирд┐рд░рдВрддрд░
INTERPOLATION_COS_LINEAR = 2
рдЬреЛрдбрд╝реЗрдВ
рдФрд░ рдЗрдВрдЯрд░рдкреЛрд▓реЗрдЯ рд╡рд┐рдзрд┐ рдХреЗ рдХреЛрдб рдореЗрдВ, рдпрджрд┐ рдХреЛрдИ рдФрд░ рдЬреЛрдбрд╝реЗрдВ:
} else if (interpolation == INTERPOLATION_COS_LINEAR) { float ft = progress * 3.1415927f; f = (progress + (1 - (float) Math.cos(ft)) * 0.5f) / 2f; }
рдФрд░ рд▓реЛ рдФрд░ рдирд┐рд╣рд╛рд░рдирд╛, рдпрд╣ рдлрд╝реЛрдЯреЛрд╢реЙрдк рд╕реЗ тАЛтАЛрдЧреНрд░реЗрдбрд┐рдПрдВрдЯ рдХреА рд▓рдЧрднрдЧ рдкреВрд░реА рдирдХрд▓ рдирд┐рдХрд▓рд╛!
рдЕрдкрдиреЗ рд▓рд┐рдП рджреЗрдЦреЗрдВ:

рд╣рдорд╛рд░рд╛ рдмрд╛рдпрд╛рдБред
рдФрд░ рдпрд╣рд╛рдБ рд╢реАрд░реНрд╖ рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рд╕реЗ рджреЛ рдЪрд┐рддреНрд░ рд╣реИрдВ, рдПрдХ рдореЗрдВ рд╕рдВрдпреБрдХреНрддред рдпрд╣ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдкреНрд░рдХреНрд╖реЗрдк рд▓рдЧрднрдЧ рд╕рдорд╛рди рд╣реИ, рдЕрдВрддрд░ рдХреЛ рдЧреЛрд▓рд╛рдИ рдХреЗ рджреМрд░рд╛рди рддреНрд░реБрдЯрд┐рдпреЛрдВ рдкрд░ рджреЛрд╖реА рдард╣рд░рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:

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