рдЖрдБрд╕реВ рдФрд░ рджрд░реНрдж рдХреЗ рдмрд┐рдирд╛ рдХрдо рд╕реЗ рдХрдо рдЪреМрдХреЛрд░ рддрд░реАрдХреЗ



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

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



рдЗрд╕ рд╡рд┐рд╢реЗрд╖ рдорд╛рдорд▓реЗ рдореЗрдВ, рдореИрдВ рдПрдХ рджреАрд░реНрдШрд╡реГрддреНрдд рд╡рд┐рднреЗрджрдХ рд╕рдореАрдХрд░рдг рд╣рд▓ рдХрд░рддрд╛ рд╣реВрдВ рдЬрд┐рд╕рдХрд╛ рдирд╛рдо рд╕рд┐рдореЛрди рдбреЗрдореА рдкреЙрдЗрд╕рди рд╣реИ ред рд╕рд╛рдереА рдкреНрд░реЛрдЧреНрд░рд╛рдорд░, рдЪрд▓реЛ рдПрдХ рдЧреЗрдо рдЦреЗрд▓рддреЗ рд╣реИрдВ: рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рдПрдВ рдХрд┐ C ++ рдХреЛрдб рдореЗрдВ рдХрд┐рддрдиреА рд▓рд╛рдЗрдиреЗрдВ рд╣реИрдВ рдЬреЛ рдЗрд╕реЗ рддрдп рдХрд░рддреА рд╣реИрдВ? рддреАрд╕рд░реЗ рдкрдХреНрд╖ рдХреЗ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЛ рдирд╣реАрдВ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХреЗрд╡рд▓ рд╣рдорд╛рд░реЗ рдирд┐рдкрдЯрд╛рди рдореЗрдВ рдПрдХ рдирдВрдЧреЗ рд╕рдВрдХрд▓рдХ рд╣реИрдВред рдЬрд╡рд╛рдм рдХрдЯ рдХреЗ рдиреАрдЪреЗ рд╣реИред

рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдХреЛрдб рдХреА рдмреАрд╕ рд▓рд╛рдЗрдиреЗрдВ рдПрдХ рд╕реЙрд▓реНрд╡рд░ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИрдВред рдпрджрд┐ рдЖрдк 3 рдбреА рдореЙрдбрд▓ рдлрд╝рд╛рдЗрд▓ рдХреЗ рдкрд╛рд░реНрд╕рд░ рд╕рд╣рд┐рдд рд╕рдм рдХреБрдЫ, рд╕рдм рдХреБрдЫ рдХреЗ рд╕рд╛рде рдЧрдгрдирд╛ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рджреЛ рд╕реМ рд▓рд╛рдЗрдиреЛрдВ рдХреЗ рднреАрддрд░ рд░рдЦреЗрдВ - рдмрд╕ рдереВрдХред

рдЙрджрд╛рд╣рд░рдг 1: рдбреЗрдЯрд╛ рдЪреМрд░рд╕рд╛рдИ


рдЖрдЗрдП рдмрд╛рдд рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдЖрдЗрдП рджреВрд░ рд╕реЗ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ, рдХрд▓реНрдкрдирд╛ рдХрд░реЗрдВ рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдирд┐рдпрдорд┐рдд рд╕рд░рдгреА f рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, 32 рддрддреНрд╡реЛрдВ рдХреА, рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рдкреНрд░рд╛рд░рдВрдн рдХреА рдЧрдИ рд╣реИ:



рдФрд░ рдлрд┐рд░ рд╣рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдПрдХ рд╣рдЬрд╛рд░ рдмрд╛рд░ рдХрд░реЗрдВрдЧреЗ: рдкреНрд░рддреНрдпреЗрдХ рд╕реЗрд▓ f [i] рдХреЗ рд▓рд┐рдП рд╣рдо рдЗрд╕рдореЗрдВ рдкрдбрд╝реЛрд╕реА рдХреЛрд╢рд┐рдХрд╛рдУрдВ рдХрд╛ рдФрд╕рдд рдореВрд▓реНрдп рд▓рд┐рдЦрддреЗ рд╣реИрдВ: f [i] = (f [i-1] + f [i + 1]) / 2ред рдЗрд╕реЗ рд╕реНрдкрд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдпрд╣рд╛рдБ рдкреВрд░реНрдг рдХреЛрдб рд╣реИ:

import matplotlib.pyplot as plt f = [0.] * 32 f[0] = f[-1] = 1. f[18] = 2. plt.plot(f, drawstyle='steps-mid') for iter in range(1000): f[0] = f[1] for i in range(1, len(f)-1): f[i] = (f[i-1]+f[i+1])/2. f[-1] = f[-2] plt.plot(f, drawstyle='steps-mid') plt.show() 

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



рдпрджрд┐ рдпрд╣ рдЖрдкрдХреЗ рд▓рд┐рдП рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдПрдВрдЯреА-рдПрд▓рд┐рдпрд╛рд╕рд┐рдВрдЧ рдХреНрдпреЛрдВ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдЕрднреА рд░реЛрдХреЗрдВ, рдПрдХ рдХрд▓рдо рдкрдХрдбрд╝реЗрдВ рдФрд░ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЛ рдЖрдХрд░реНрд╖рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ, рдЕрдиреНрдпрдерд╛ рдЖрдЧреЗ рдкрдврд╝рдиреЗ рдХрд╛ рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рд╣реИред рддреНрд░рд┐рдХреЛрдгреАрдп рд╕рддрд╣ рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд╕рдорд╛рди рд╣реИред рдХрд▓реНрдкрдирд╛ рдХрд░реЗрдВ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рд╢реАрд░реНрд╖ рдХреЗ рд▓рд┐рдП рд╣рдо рдЕрдкрдиреЗ рдкрдбрд╝реЛрд╕рд┐рдпреЛрдВ рдХреЛ рдвреВрдВрдврддреЗ рд╣реИрдВ, рдЙрдирдХреЗ рджреНрд░рд╡реНрдпрдорд╛рди рдХреЗ рдХреЗрдВрджреНрд░ рдХреА рдЧрдгрдирд╛ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдЕрдкрдиреЗ рд╢реАрд░реНрд╖ рдХреЛ рджреНрд░рд╡реНрдпрдорд╛рди рдХреЗ рдЗрд╕ рдХреЗрдВрджреНрд░ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдЗрд╕рд▓рд┐рдП рджрд╕ рдмрд╛рд░ред рдкрд░рд┐рдгрд╛рдо рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реЛрдЧрд╛:



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

рдЙрджрд╛рд╣рд░рдг 2: рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЛ рдмрдврд╝рд╛рдирд╛ / рдмрджрд▓рдирд╛


рдкреВрд░рд╛ рдХреЛрдб рдЬреАрдердм рдкрд░ рдЙрдкрд▓рдмреНрдз рд╣реИ , рд▓реЗрдХрд┐рди рдпрд╣рд╛рдВ рдореИрдВ рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣рд┐рд╕реНрд╕рд╛ рджреВрдВрдЧрд╛, рдХреЗрд╡рд▓ 3 рдбреА рдореЙрдбрд▓ рдХреЗ рдкрдврд╝рдиреЗ рдФрд░ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдПред рдЗрд╕рд▓рд┐рдП, рдореЗрд░реЗ рд▓рд┐рдП рддреНрд░рд┐рднреБрдЬрд┐рдд рдореЙрдбрд▓ рдХреЛ рджреЛ рд╕рд░рдгрд┐рдпреЛрдВ рджреНрд╡рд╛рд░рд╛ рджрд░реНрд╢рд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ: рдХреНрд░рд┐рдпрд╛ рдФрд░ рдЪреЗрд╣рд░реЗред Verts array рд╕рд┐рд░реНрдл рддреАрди-рдЖрдпрд╛рдореА рдмрд┐рдВрджреБрдУрдВ рдХрд╛ рдПрдХ рд╕реЗрдЯ рд╣реИ, рд╡реЗ рдмрд╣реБрднреБрдЬ рдЬрд╛рд▓ рдХреЗ рдХреЛрдиреЗ рд╣реИрдВред рдЪреЗрд╣рд░реЛрдВ рдХрд╛ рд╕рд░рдгреА рддреНрд░рд┐рднреБрдЬреЛрдВ рдХрд╛ рдПрдХ рд╕рдореВрд╣ рд╣реИ (рддреНрд░рд┐рдХреЛрдгреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ face.size ()) рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИ, рдкреНрд░рддреНрдпреЗрдХ рддреНрд░рд┐рдХреЛрдг рдХреЗ рд▓рд┐рдП рд╢реАрд░реНрд╖ рд╕рд░рдгреА рд╕реЗ рд╕реВрдЪрдХ рд╕рд░рдгреА рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реЛрддреЗ рд╣реИрдВред рдбреЗрдЯрд╛ рдкреНрд░рд╛рд░реВрдк рдФрд░ рдЗрд╕рдХреЗ рд╕рд╛рде рдХрд╛рдо рдореИрдВрдиреЗ рдХрдВрдкреНрдпреВрдЯрд░ рдЧреНрд░рд╛рдлрд┐рдХреНрд╕ рдкрд░ рдЕрдкрдиреЗ рд╡реНрдпрд╛рдЦреНрдпрд╛рди рдХреЗ рдкрд╛рдареНрдпрдХреНрд░рдо рдореЗрдВ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рд╣реИред рдПрдХ рддреАрд╕рд░рд╛ рд╕рд░рдгреА рднреА рд╣реИ, рдЬрд┐рд╕реЗ рдореИрдВ рдкрд╣рд▓реЗ рджреЛ (рдЕрдзрд┐рдХ рд╕рдЯреАрдХ рд░реВрдк рд╕реЗ, рдХреЗрд╡рд▓ рдЪреЗрд╣рд░реЗ рдХреЗ рд╕рд░рдгреА рд╕реЗ) рд╕реЗ рд╕реБрдирд╛рддрд╛ рд╣реВрдВ - vvadjред рдпрд╣ рдПрдХ рдРрд╕рд╛ рд╕рд░рдгреА рд╣реИ рдЬреЛ рдкреНрд░рддреНрдпреЗрдХ рд╢реАрд░реНрд╖ рдХреЗ рд▓рд┐рдП (рджреНрд╡рд┐-рдЖрдпрд╛рдореА рд╕рд░рдгреА рдХрд╛ рдкрд╣рд▓рд╛ рд╕реВрдЪрдХрд╛рдВрдХ) рдЕрдкрдиреЗ рдкрдбрд╝реЛрд╕рд┐рдпреЛрдВ (рджреВрд╕рд░реЗ рд╕реВрдЪрдХрд╛рдВрдХ) рдХреЗ рд╕реВрдЪрдХрд╛рдВрдХреЛрдВ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИред

 std::vector<Vec3f> verts; std::vector<std::vector<int> > faces; std::vector<std::vector<int> > vvadj; 

рдкрд╣рд▓реА рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдореЗрд░реА рд╕рддрд╣ рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рд╢реАрд░реНрд╖ рдХреЗ рд▓рд┐рдП рдореИрдВ рд╡рдХреНрд░рддрд╛ рд╡реЗрдХреНрдЯрд░ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рддрд╛ рд╣реВрдВред рдЖрдЗрдП рд╕реНрдкрд╖реНрдЯ рдХрд░реЗрдВ: рд╡рд░реНрддрдорд╛рди рд╢реАрд░реНрд╖ v рдХреЗ рд▓рд┐рдП, рдореИрдВ рдЕрдкрдиреЗ рд╕рднреА рдкрдбрд╝реЛрд╕рд┐рдпреЛрдВ рдХреЗ n1-n4 рдкрд░ рдкреБрдирд░рд╛рд╡реГрддрд┐ рдХрд░рддрд╛ рд╣реВрдВ; рдлрд┐рд░ рдореИрдВрдиреЗ рдЙрдирдХреЗ рджреНрд░рд╡реНрдпрдорд╛рди b = (n1 + n2 + n3 + n4) / 4 рдХрд╛ рдХреЗрдВрджреНрд░ рдЧрд┐рдирд╛ред рдЦреИрд░, рдЕрдВрддрд┐рдо рд╡рдХреНрд░рддрд╛ рд╡реЗрдХреНрдЯрд░ рдХреА рдЧрдгрдирд╛ c = vb рдХреЗ рд░реВрдк рдореЗрдВ рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИ, рдпрд╣ рджреВрд╕рд░реА рд╡реНрдпреБрддреНрдкрдиреНрди рдХреЗ рд▓рд┐рдП рд╕рд╛рдзрд╛рд░рдг рдкрд░рд┐рдорд┐рдд рдЕрдВрддрд░ рдЬреИрд╕рд╛ рдХреБрдЫ рдирд╣реАрдВ рд╣реИред



рд╕реАрдзреЗ рдХреЛрдб рдореЗрдВ, рдпрд╣ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:

  std::vector<Vec3f> curvature(verts.size(), Vec3f(0,0,0)); for (int i=0; i<(int)verts.size(); i++) { for (int j=0; j<(int)vvadj[i].size(); j++) { curvature[i] = curvature[i] - verts[vvadj[i][j]]; } curvature[i] = verts[i] + curvature[i] / (float)vvadj[i].size(); } 

рдареАрдХ рд╣реИ, рддреЛ рд╣рдо рдирд┐рдореНрди рдХрд╛рд░реНрдп рдХрдИ рдмрд╛рд░ рдХрд░рддреЗ рд╣реИрдВ (рдкрд┐рдЫрд▓реА рддрд╕реНрд╡реАрд░ рджреЗрдЦреЗрдВ): рд╣рдо рд╢реАрд░реНрд╖ v рдХреЛ v: = b + const * c рдкрд░ рд▓реЗ рдЬрд╛рддреЗ рд╣реИрдВред рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдпрджрд┐ рд╕реНрдерд┐рд░ рдПрдХ рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИ, рддреЛ рд╣рдорд╛рд░рд╛ рд╢реАрд░реНрд╖ рдХрд╣реАрдВ рднреА рдирд╣реАрдВ рдЬрд╛рдПрдЧрд╛! рдпрджрд┐ рдирд┐рд░рдВрддрд░ рд╢реВрдиреНрдп рд╣реИ, рддреЛ рд╢реАрд░реНрд╖ рдХреЛ рдкрдбрд╝реЛрд╕реА рдЫреЛрд░реЛрдВ рдХреЗ рджреНрд░рд╡реНрдпрдорд╛рди рдХреЗ рдХреЗрдВрджреНрд░ рд╕реЗ рдмрджрд▓ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рд╣рдорд╛рд░реА рд╕рддрд╣ рдХреЛ рдЪрд┐рдХрдирд╛ рдХрд░ рджреЗрдЧрд╛ред рдпрджрд┐ рдирд┐рд░рдВрддрд░рддрд╛ рдПрдХрддрд╛ рд╕реЗ рдЕрдзрд┐рдХ рд╣реИ (рд╢реАрд░реНрд╖рдХ рдЪрд┐рддреНрд░ const = 2.1 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛), рддреЛ рд╕рддрд╣ рдХреЛ рд╡рдХреНрд░рддрд╛ рд╡реЗрдХреНрдЯрд░ рдХреА рджрд┐рд╢рд╛ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рд╡рд┐рд╡рд░рдг рдХреЛ рдордЬрдмреВрдд рдХрд░реЗрдЧрд╛ред рдпрд╣ рдХреЛрдб рдореЗрдВ рдХреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИ:

  for (int it=0; it<100; it++) { for (int i=0; i<(int)verts.size(); i++) { Vec3f bary(0,0,0); for (int j=0; j<(int)vvadj[i].size(); j++) { bary = bary + verts[vvadj[i][j]]; } bary = bary / (float)vvadj[i].size(); verts[i] = bary + curvature[i]*2.1; // play with the coeff here } } 

рд╡реИрд╕реЗ, рдЕрдЧрд░ рдпрд╣ рдПрдХрддрд╛ рд╕реЗ рдХрдо рд╣реИ, рддреЛ рд╡рд┐рд╡рд░рдг рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд (const = 0.5) рдХрдордЬреЛрд░ рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рдпрд╣ рд╕рд░рд▓ рдЪреМрд░рд╕рд╛рдИ рдХреЗ рдмрд░рд╛рдмрд░ рдирд╣реАрдВ рд╣реЛрдЧрд╛, "рдЪрд┐рддреНрд░ рд╡рд┐рдкрд░реАрдд" рд░рд╣реЗрдЧрд╛:



рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдореЗрд░рд╛ рдХреЛрдб Wavefront .obj рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдПрдХ 3D рдореЙрдбрд▓ рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рддрд╛ рд╣реИ, рдореИрдВрдиреЗ рддреАрд╕рд░реЗ рдкрдХреНрд╖ рдХреЗ рдХрд╛рд░реНрдпрдХреНрд░рдо рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдпрд╛ред рдЖрдк рдкрд░рд┐рдгрд╛рдореА рдореЙрдбрд▓ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдСрдирд▓рд╛рдЗрди рджрд░реНрд╢рдХ рдореЗрдВ ред рдпрджрд┐ рдЖрдк рдореЙрдбрд▓ рдмрдирд╛рдиреЗ рдХреЗ рдмрдЬрд╛рдп рд░реЗрдВрдбрд░ рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЛрдВ рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ, рддреЛ рдХрдВрдкреНрдпреВрдЯрд░ рдЧреНрд░рд╛рдлрд┐рдХреНрд╕ рдкрд░ рдореЗрд░рд╛ рдХреЛрд░реНрд╕ рдкрдврд╝реЗрдВред

рдЙрджрд╛рд╣рд░рдг 3: рдмрд╛рдзрд╛рдУрдВ рдХреЛ рдЬреЛрдбрд╝рдирд╛


рдЖрдЗрдП рдмрд╣реБрдд рдкрд╣рд▓реЗ рдЙрджрд╛рд╣рд░рдг рдкрд░ рд╡рд╛рдкрд╕ рдЬрд╛рдПрдВ, рдФрд░ рдареАрдХ рд╡реИрд╕рд╛ рд╣реА рдХрд╛рдо рдХрд░реЗрдВ, рд▓реЗрдХрд┐рди рд╕рдВрдЦреНрдпрд╛ 0, 18 рдФрд░ 31 рдХреЗ рддрд╣рдд рд╕рд░рдгреА рдХреЗ рддрддреНрд╡реЛрдВ рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрдирд╛ рдирд╣реАрдВ рд╣реЛрдЧрд╛:

 import matplotlib.pyplot as plt x = [0.] * 32 x[0] = x[31] = 1. x[18] = 2. plt.plot(x, drawstyle='steps-mid') for iter in range(1000): for i in range(len(x)): if i in [0,18,31]: continue x[i] = (x[i-1]+x[i+1])/2. plt.plot(x, drawstyle='steps-mid') plt.show() 

рдореИрдВрдиреЗ рдЬреАрд░реЛ рдХреЗ рд╕рд╛рде рд╕рд░рдгреА рдХреЗ рдмрд╛рдХреА, "рдореБрдХреНрдд" рддрддреНрд╡реЛрдВ рдХреЛ рдЖрд░рдВрднреАрдХреГрдд рдХрд┐рдпрд╛, рдФрд░ рдлрд┐рд░ рднреА рдЗрд╕реЗ рдкрдбрд╝реЛрд╕реА рддрддреНрд╡реЛрдВ рдХреЗ рдФрд╕рдд рдореВрд▓реНрдп рдХреЗ рд╕рд╛рде рдмрджрд▓ рджрд┐рдпрд╛ред рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╕рд░рдгреА рдХрд╛ рд╡рд┐рдХрд╛рд╕ рдкрд╣рд▓реЗ рд╕реМ рдФрд░ рдкрдЪрд╛рд╕ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдпреЛрдВ рдореЗрдВ рджрд┐рдЦрддрд╛ рд╣реИ:



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

рд▓рдпрд╛рддреНрдордХ рд╡рд┐рд╖рдпрд╛рдВрддрд░: рд░реИрдЦрд┐рдХ рд╕рдореАрдХрд░рдгреЛрдВ рдХреА рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ рдХрд╛ рд╕рдВрдЦреНрдпрд╛рддреНрдордХ рд╕рдорд╛рдзрд╛рдиред


рд╣рдореЗрдВ рд░реИрдЦрд┐рдХ рд╕рдореАрдХрд░рдгреЛрдВ рдХреА рд╕рд╛рдорд╛рдиреНрдп рдкреНрд░рдгрд╛рд▓реА рджреА рдЬрд╛рдП:



рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд╕рдорд╛рди рдЪрд┐рдиреНрд╣ x_i рдХреЗ рдПрдХ рддрд░рдл рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рд╕рдореАрдХрд░рдг рдХреЛ рдЫреЛрдбрд╝рддреЗ рд╣реБрдП:



рд╣рдореЗрдВ рдПрдХ рдордирдорд╛рдирд╛ рд╡реЗрдХреНрдЯрд░ рджрд┐рдпрд╛ рдЬрд╛рдП рд╕рдореАрдХрд░рдгреЛрдВ рдХреА рдПрдХ рдкреНрд░рдгрд╛рд▓реА рдХреЗ рд╕рдорд╛рдзрд╛рди рдХрд╛ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рдирд╛ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╢реВрдиреНрдп)ред

рдлрд┐рд░, рдЗрд╕реЗ рд╣рдорд╛рд░реЗ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рджрд╛рдИрдВ рдУрд░ рдЪрд┐рдкрдХрд╛рддреЗ рд╣реБрдП, рд╣рдо рдПрдХ рдЕрджреНрдпрддрди рд╕рдорд╛рдзрд╛рди рд╕рдиреНрдирд┐рдХрдЯрди рд╡реЗрдХреНрдЯрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ ред

рдЗрд╕реЗ рд╕реНрдкрд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, X0 рдХреЛ x0 рд╕реЗ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:



рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рд╕рдордп рдХреЛ рджреЛрд╣рд░рд╛рддреЗ рд╣реБрдП, рд╕рдорд╛рдзрд╛рди рд╡реЗрдХреНрдЯрд░ рджреНрд╡рд╛рд░рд╛ рдЕрдиреБрдорд╛рдирд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛

рдЪрд▓реЛ рдмрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдПрдХ рдкреБрдирд░рд╛рд╡рд░реНрддрди рд╕реВрддреНрд░ рд▓рд┐рдЦреЗрдВ:



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

рдЙрджрд╛рд╣рд░рдг 3 рдлрд┐рд░ рд╕реЗ, рд▓реЗрдХрд┐рди рджреВрд╕рд░реА рдУрд░


рдФрд░ рдЕрдм рдЪрд▓реЛ рдЙрджрд╛рд╣рд░рдг 3 рд╕реЗ рдореБрдЦреНрдп рд▓реВрдк рдкрд░ рдХрд░реАрдм рд╕реЗ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВ:

 for iter in range(1000): for i in range(len(x)): if i in [0,18,31]: continue x[i] = (x[i-1]+x[i+1])/2. 

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



рдереЛрдбрд╝рд╛ рд╕рдордп рд▓реЗрдВ, рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдореЗрд░реЗ рдкрд╛рдпрдерди рдХреЛрдб рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдХрдбрд╝рд╛рдИ рд╕реЗ рд╕рдореАрдХрд░рдгреЛрдВ рдХреА рдЗрд╕ рдкреНрд░рдгрд╛рд▓реА рдХреЗ рд▓рд┐рдП рдЬреИрдХреЛрдмреА рд╡рд┐рдзрд┐ рдХрд╛ рдПрдХ рдЕрджреНрдпрддрди рд╣реИред рдореВрд▓реНрдп x [0], x [18] рдФрд░ x [31] рдХреНрд░рдорд╢рдГ рдореЗрд░реЗ рд▓рд┐рдП рддрдп рдХрд┐рдП рдЧрдП рд╣реИрдВ, рд╡реЗ рдЪрд░ рдХреЗ рд╕реЗрдЯ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЙрдиреНрд╣реЗрдВ рджрд╛рдИрдВ рдУрд░ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдХреБрд▓ рдорд┐рд▓рд╛рдХрд░, рд╣рдорд╛рд░реЗ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд╕рднреА рд╕рдореАрдХрд░рдг рдЬреИрд╕реЗ рджрд┐рдЦрддреЗ рд╣реИрдВ - x [i-1] + 2 x [i] - x [i + 1] = 0. рдпрд╣ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рджреВрд╕рд░реА рд╡реНрдпреБрддреНрдкрдиреНрди рдХреЗ рд▓рд┐рдП рд╕рд╛рдзрд╛рд░рдг рдкрд░рд┐рдорд┐рдд рдЕрдВрддрд░ рд╕реЗ рдЕрдзрд┐рдХ рдХреБрдЫ рдирд╣реАрдВ рд╣реИред рдпрд╣реА рд╣реИ, рд╕рдореАрдХрд░рдгреЛрдВ рдХреА рд╣рдорд╛рд░реА рдкреНрд░рдгрд╛рд▓реА рдХреЗрд╡рд▓ рдпрд╣ рдмрддрд╛рддреА рд╣реИ рдХрд┐ рджреВрд╕рд░реА рд╡реНрдпреБрддреНрдкрддреНрддрд┐ рд╢реВрдиреНрдп рдХреЗ рдмрд░рд╛рдмрд░ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП (рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ, рдмрд┐рдВрджреБ x [18] рдХреЛ рдЫреЛрдбрд╝рдХрд░)ред рдпрд╛рдж рд░рдЦреЗрдВ, рдореИрдВрдиреЗ рдХрд╣рд╛ рдХрд┐ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдпреЛрдВ рдХреЛ рд░реИрдЦрд┐рдХ рд░реИрдВрдк рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП? рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ рджреВрд╕рд░реА рд╡реНрдпреБрддреНрдкрдиреНрди рдХрд╛ рд░реИрдЦрд┐рдХ рд╡реНрдпреБрддреНрдкрдиреНрди рд╢реВрдиреНрдп рд╣реИред

рдХреНрдпрд╛ рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рд╣рдордиреЗ рдЕрднреА рд▓рд╛рдкреНрд▓рд╛рд╕ рд╕рдореАрдХрд░рдг рдХреЗ рд▓рд┐рдП рдбрд┐рд░рд┐рдЪрд▓реЗрдЯ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд┐рдпрд╛ рд╣реИ ?

рд╡реИрд╕реЗ, рдПрдХ рдЪреМрдХрд╕ рдкрд╛рдардХ рдХреЛ рджреЗрдЦрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐, рдореЗрд░реЗ рдХреЛрдб рдореЗрдВ рдХрдбрд╝рд╛рдИ рд╕реЗ рдмреЛрд▓рддреЗ рд╣реБрдП, рд░реИрдЦрд┐рдХ рд╕рдореАрдХрд░рдгреЛрдВ рдХреЗ рд╕рд┐рд╕реНрдЯрдо рдХреЛ рдЬреИрдХреЛрдмреА рд╡рд┐рдзрд┐ рджреНрд╡рд╛рд░рд╛ рдирд╣реАрдВ рдмрд▓реНрдХрд┐ рдЧреЙрд╕-рд╕реАрдбреЗрд▓ рд╡рд┐рдзрд┐ рджреНрд╡рд╛рд░рд╛ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдХрд┐ рдЬреИрдХреЛрдмреА рд╡рд┐рдзрд┐ рдХрд╛ рдПрдХ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЕрдиреБрдХреВрд▓рди рд╣реИред



рдЙрджрд╛рд╣рд░рдг 4: рдкреЙрдЗрд╕рди рд╕рдореАрдХрд░рдг


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

 import matplotlib.pyplot as plt x = [0.] * 32 x[0] = x[31] = 1. x[18] = 2. plt.plot(x, drawstyle='steps-mid') for iter in range(1000): for i in range(len(x)): if i in [0,18,31]: continue x[i] = (x[i-1]+x[i+1] +11./32**2 )/2. plt.plot(x, drawstyle='steps-mid') plt.show() 

рдкрд┐рдЫрд▓реЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рд╣рдордиреЗ рдкрд╛рдпрд╛ рдХрд┐ рджреНрд░рд╡реНрдпрдорд╛рди рдХреЗ рдХреЗрдВрджреНрд░ рдореЗрдВ рд░рдЦрдирд╛ рд▓рд╛рдкреНрд▓рд╛рд╕ рдСрдкрд░реЗрдЯрд░ (рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рджреВрд╕рд░рд╛ рд╡реНрдпреБрддреНрдкрдиреНрди) рдХрд╛ рд╡рд┐рд╡реЗрдХ рд╣реИред рдпрд╣реА рд╣реИ, рдЕрдм рд╣рдо рд╕рдореАрдХрд░рдгреЛрдВ рдХреА рдПрдХ рдкреНрд░рдгрд╛рд▓реА рдХреЛ рд╣рд▓ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдЬреЛ рдХрд╣рддреА рд╣реИ рдХрд┐ рд╣рдорд╛рд░реЗ рд╕рдВрдХреЗрдд рдореЗрдВ рдХреБрдЫ рдирд┐рд░рдВрддрд░ рджреВрд╕рд░рд╛ рд╡реНрдпреБрддреНрдкрдиреНрди рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рджреВрд╕рд░реА рд╡реНрдпреБрддреНрдкрдиреНрди рд╕рддрд╣ рдХреА рд╡рдХреНрд░рддрд╛ рд╣реИ; рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдПрдХ рдЯреБрдХрдбрд╝рд╛-рдЪрддреБрд░реНрдерд╛рдВрд╢ рдлрд╝рдВрдХреНрд╢рди рд╣рдорд╛рд░реЗ рд╕рд┐рд╕реНрдЯрдо рдХрд╛ рд╕рдорд╛рдзрд╛рди рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдЖрдЗрдП 32 рдирдореВрдиреЛрдВ рдореЗрдВ рдирдореВрдиреЗ рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВ:



32 рддрддреНрд╡реЛрдВ рдХреА рдПрдХ рд╕рд░рдгреА рд▓рдВрдмрд╛рдИ рдХреЗ рд╕рд╛рде, рд╣рдорд╛рд░рд╛ рд╕рд┐рд╕реНрдЯрдо рд╕реМ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдпреЛрдВ рдХреЗ рдПрдХ рдЬреЛрдбрд╝реЗ рдореЗрдВ рдПрдХ рд╕рдорд╛рдзрд╛рди рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рд╣реЛрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдЕрдЧрд░ рд╣рдо 128 рддрддреНрд╡реЛрдВ рдХреА рдПрдХ рд╕рд░рдгреА рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВ? рдпрд╣рд╛рдВ рд╕рдм рдХреБрдЫ рдмрд╣реБрдд рджреБрдЦрдж рд╣реИ, рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдпреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╣рдЬрд╛рд░реЛрдВ рдореЗрдВ рдЧрдгрдирд╛ рдХреА рдЬрд╛рдиреА рдЪрд╛рд╣рд┐рдП:



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



рдФрд░ рдЖрдк рдмрдВрдж рдирд╣реАрдВ рджрд┐рдЦрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рд╕рдореАрдХрд░рдгреЛрдВ рдХреЗ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕реЙрд▓реНрд╡рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕рд▓рд┐рдП рдореИрдВ рдореИрдЯреНрд░рд┐рдХреНрд╕ рдП рдФрд░ рдХреЙрд▓рдо рдмреА рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рдХреЗ рдПрдХ рд╣реА рдЙрджрд╛рд╣рд░рдг рдХреЛ рд╣рд▓ рдХрд░рддрд╛ рд╣реВрдВ, рдлрд┐рд░ рдореИрдЯреНрд░рд┐рдХреНрд╕ рд╕рдореАрдХрд░рдг рдПрдХреНрд╕ = рдмреА рдХреЛ рд╣рд▓ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ:

 import numpy as np import matplotlib.pyplot as plt n=1000 x = [0.] * n x[0] = x[-1] = 1. m = n*57//100 x[m] = 2. A = np.matrix(np.zeros((n, n))) for i in range(1,n-2): A[i, i-1] = -1. A[i, i] = 2. A[i, i+1] = -1. A = A[1:-2,1:-2] A[m-2,m-1] = 0 A[m-1,m-2] = 0 b = np.matrix(np.zeros((n-3, 1))) b[0,0] = x[0] b[m-2,0] = x[m] b[m-1,0] = x[m] b[-1,0] = x[-1] for i in range(n-3): b[i,0] += 11./n**2 x2 = ((np.linalg.inv(A)*b).transpose().tolist()[0]) x2.insert(0, x[0]) x2.insert(m, x[m]) x2.append(x[-1]) plt.plot(x2, drawstyle='steps-mid') plt.show() 

рдФрд░ рдпрд╣рд╛рдВ рдЗрд╕ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рдХрд╛рдо рдХрд╛ рдкрд░рд┐рдгрд╛рдо рд╣реИ, рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рд╕рдорд╛рдзрд╛рди рддреБрд░рдВрдд рдирд┐рдХрд▓рд╛:



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

рдЕрдкрдбреЗрдЯ: рд╣реЛрдорд╡рд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рдФрд░ рдЦрд┐рд▓реМрдирд╛


SquareRootOfZero рджреНрд╡рд╛рд░рд╛ рд╕реБрдЭрд╛рдП рдЧрдП рд╡рд┐рдЪрд╛рд░ рдХреЛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдирд╛, рдЗрд╕ рдХреЛрдб рдХреЗ рд╕рд╛рде рдЦреЗрд▓рдирд╛:

рдЫрд┐рдкрд╛ рд╣реБрдЖ рдкрд╛рда
 import numpy as np import matplotlib.pyplot as plt import matplotlib.animation as animation fig, ax = plt.subplots() x = [282, 282, 277, 274, 266, 259, 258, 249, 248, 242, 240, 238, 240, 239, 242, 242, 244, 244, 247, 247, 249, 249, 250, 251, 253, 252, 254, 253, 254, 254, 257, 258, 258, 257, 256, 253, 253, 251, 250, 250, 249, 247, 245, 242, 241, 237, 235, 232, 228, 225, 225, 224, 222, 218, 215, 211, 208, 203, 199, 193, 185, 181, 173, 163, 147, 144, 142, 134, 131, 127, 121, 113, 109, 106, 104, 99, 95, 92, 90, 87, 82, 78, 77, 76, 73, 72, 71, 65, 62, 61, 60, 57, 56, 55, 54, 53, 52, 51, 45, 42, 40, 40, 38, 40, 38, 40, 40, 43, 45, 45, 45, 43, 42, 39, 36, 35, 22, 20, 19, 19, 20, 21, 22, 27, 26, 25, 21, 19, 19, 20, 20, 22, 22, 25, 24, 26, 28, 28, 27, 25, 25, 20, 20, 19, 19, 21, 22, 23, 25, 25, 28, 29, 33, 34, 39, 40, 42, 43, 49, 50, 55, 59, 67, 72, 80, 83, 86, 88, 89, 92, 92, 92, 89, 89, 87, 84, 81, 78, 76, 73, 72, 71, 70, 67, 67] y = [0, 76, 81, 83, 87, 93, 94, 103, 106, 112, 117, 124, 126, 127, 130, 133, 135, 137, 140, 142, 143, 145, 146, 153, 156, 159, 160, 165, 167, 169, 176, 182, 194, 199, 203, 210, 215, 217, 222, 226, 229, 236, 240, 243, 246, 250, 254, 261, 266, 271, 273, 275, 277, 280, 285, 287, 289, 292, 294, 297, 300, 301, 302, 303, 301, 301, 302, 301, 303, 302, 300, 300, 299, 298, 296, 294, 293, 293, 291, 288, 287, 284, 282, 282, 280, 279, 277, 273, 268, 267, 265, 262, 260, 257, 253, 245, 240, 238, 228, 215, 214, 211, 209, 204, 203, 202, 200, 197, 193, 191, 189, 186, 185, 184, 179, 176, 163, 158, 154, 152, 150, 147, 145, 142, 140, 139, 136, 133, 128, 127, 124, 123, 121, 117, 111, 106, 105, 101, 94, 92, 90, 85, 82, 81, 62, 55, 53, 51, 50, 48, 48, 47, 47, 48, 48, 49, 49, 51, 51, 53, 54, 54, 58, 59, 58, 56, 56, 55, 54, 50, 48, 46, 44, 41, 36, 31, 21, 16, 13, 11, 7, 5, 4, 2, 0] n = len(x) cx = x[:] cy = y[:] for i in range(0,n): bx = (x[(i-1+n)%n] + x[(i+1)%n] )/2. by = (y[(i-1+n)%n] + y[(i+1)%n] )/2. cx[i] = cx[i] - bx cy[i] = cy[i] - by lines = [ax.plot(x, y)[0], ax.text(0.05, 0.05, "Iteration #0", transform=ax.transAxes, fontsize=14,bbox=dict(boxstyle='round', facecolor='wheat', alpha=0.5)), ax.plot(x, y)[0] ] def animate(iteration): global x, y print(iteration) for i in range(0,n): x[i] = (x[(i-1+n)%n]+x[(i+1)%n])/2. + 0.*cx[i] # play with the coeff here, 0. by default y[i] = (y[(i-1+n)%n]+y[(i+1)%n])/2. + 0.*cy[i] lines[0].set_data(x, y) # update the data. lines[1].set_text("Iteration #" + str(iteration)) plt.draw() ax.relim() ax.autoscale_view(False,True,True) return lines ani = animation.FuncAnimation(fig, animate, frames=np.arange(0, 100), interval=1, blit=False, save_count=50) #ani.save('line.gif', dpi=80, writer='imagemagick') plt.show() 



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



рдФрд░ рдпрд╣рд╛рдБ рдЧреБрдгрд╛рдВрдХ 2 рдХреЗ рд╕рд╛рде рдкрд░рд┐рдгрд╛рдо рд╣реИред



рдЧреГрд╣рдХрд╛рд░реНрдп: рдХреНрдпреЛрдВ рджреВрд╕рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд▓реЗрдирд┐рди рдкрд╣рд▓реЗ рджреЛрдЬрд╝рд░рд┐рдиреНрд╕реНрдХреА рдореЗрдВ рдмрджрд▓ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ рдлрд┐рд░ рд▓реЗрдирд┐рди рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ рдмрдбрд╝реЗ рдЖрдХрд╛рд░ рдХрд╛?

рдирд┐рд╖реНрдХрд░реНрд╖


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

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



рдЕрдзрд┐рдХ рдХреЗ рд▓рд┐рдП рдмрдиреЗ рд░рд╣реЗрдВ!

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


All Articles