рд╢реЛрд░ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рд╕реЗ рдирдХреНрд╢реЗ рдмрдирд╛рдирд╛

рдореЗрд░реА рд╕рд╛рдЗрдЯ рдкрд░ рд╕рдмрд╕реЗ рд▓реЛрдХрдкреНрд░рд┐рдп рд▓реЗрдЦреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдмрд╣реБрднреБрдЬ рдорд╛рдирдЪрд┐рддреНрд░реЛрдВ рдХреА рдкреАрдврд╝реА (рд╣реИрдмреЗ рдореЗрдВ рдЕрдиреБрд╡рд╛рдж ) рдХреЛ рд╕рдорд░реНрдкрд┐рдд рд╣реИред рдРрд╕реЗ рдХрд╛рд░реНрдб рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рдлреА рдореЗрд╣рдирдд рдХрд░рдиреА рдкрдбрд╝рддреА рд╣реИред рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рдЗрд╕рдХреЗ рд╕рд╛рде рд╢реБрд░реБрдЖрдд рдирд╣реАрдВ рдХреА, рд▓реЗрдХрд┐рди рдмрд╣реБрдд рд╕рд░рд▓ рдХрд╛рд░реНрдп рдХреЗ рд╕рд╛рде, рдЬрд┐рд╕рдХрд╛ рдореИрдВ рдпрд╣рд╛рдВ рд╡рд░реНрдгрди рдХрд░реВрдВрдЧрд╛ред рдпрд╣ рд╕рд░рд▓ рддрдХрдиреАрдХ рдЖрдкрдХреЛ 50 рд╕реЗ рдХрдо рд▓рд╛рдЗрдиреЛрдВ рдХреЗ рдХреЛрдб рдореЗрдВ рдРрд╕реЗ рдХрд╛рд░реНрдб рдмрдирд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИ:


рдореИрдВ рдпрд╣ рдирд╣реАрдВ рд╕рдордЭрд╛рдКрдВрдЧрд╛ рдХрд┐ рдРрд╕реЗ рдХрд╛рд░реНрдб рдХреИрд╕реЗ рдмрдирд╛рдПрдВ: рдпрд╣ рднрд╛рд╖рд╛, рдЧреНрд░рд╛рдлрд┐рдХреНрд╕ рд▓рд╛рдЗрдмреНрд░реЗрд░реА, рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдЖрджрд┐ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред рдореИрдВ рд╕рд┐рд░реНрдл рдпрд╣ рдмрддрд╛рдКрдВрдЧрд╛ рдХрд┐ рдореИрдк рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдПрд░реЗ рдХреЛ рдХреИрд╕реЗ рдкреЙрдкреНрдпреБрд▓реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рдП ред

рд╢реЛрд░


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

рдЫрд╡рд┐

рд╣рдо рдорд╛рдирдЪрд┐рддреНрд░ рдкрд░ рдкреНрд░рддреНрдпреЗрдХ рдмрд┐рдВрджреБ рдкрд░ 0.0 рд╕реЗ 1.0 рддрдХ рдХреА рд╕рдВрдЦреНрдпрд╛ рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕ рдЫрд╡рд┐ рдореЗрдВ, 0.0 рдХрд╛рд▓рд╛ рд╣реИ рдФрд░ 1.0 рд╕рдлреЗрдж рд╣реИред рдпрд╣рд╛рдВ рджреЗрдЦреЗрдВ рдХрд┐ C рдЬреИрд╕реА рднрд╛рд╖рд╛ рдХреЗ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдЧреНрд░рд┐рдб рдмрд┐рдВрджреБ рдХрд╛ рд░рдВрдЧ рдХреИрд╕реЗ рд╕реЗрдЯ рдХрд░реЗрдВ:

for (int y = 0; y < height; y++) { for (int x = 0; x < width; x++) { double nx = x/width - 0.5, ny = y/height - 0.5; value[y][x] = noise(nx, ny); } } 

рд▓реВрдк рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ, рдкрд╛рдпрдерди, рд╣реИрдХреНрд╕, рд╕реА ++, рд╕реА #, рдЬрд╛рд╡рд╛, рдФрд░ рдЕрдзрд┐рдХрд╛рдВрд╢ рдЕрдиреНрдп рд▓реЛрдХрдкреНрд░рд┐рдп рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рд╕рдорд╛рди рдХрд╛рдо рдХрд░реЗрдЧрд╛, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЗрд╕реЗ рд╕реА-рдЬреИрд╕реЗ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдореЗрдВ рджрд┐рдЦрд╛рдКрдВрдЧрд╛ рддрд╛рдХрд┐ рдЖрдк рдЗрд╕реЗ рдЙрд╕ рднрд╛рд╖рд╛ рдореЗрдВ рдмрджрд▓ рд╕рдХреЗрдВ, рдЬрд┐рд╕рдХреА рдЖрдкрдХреЛ рдЬрд╝рд░реВрд░рдд рд╣реИред рдмрд╛рдХреА рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдореЗрдВ, рдореИрдВ рджрд┐рдЦрд╛рдКрдВрдЧрд╛ рдХрд┐ рдХрд┐рд╕ рддрд░рд╣ рд╕реЗ рдХрдИ рдлрдВрдХреНрд╢рди рдЬреЛрдбрд╝рдиреЗ рдкрд░ рд╕рд╛рдЗрдХрд┐рд▓ рдХрд╛ рд╢рд░реАрд░ рдмрджрд▓ рдЬрд╛рддрд╛ рд╣реИ (рд▓рд╛рдЗрди value[y][x]=тАж )ред рдбреЗрдореЛ рдПрдХ рдкреВрд░реНрдг рдЙрджрд╛рд╣рд░рдг рджрд┐рдЦрд╛рдПрдЧрд╛ред

рдХреБрдЫ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдореЗрдВ, рдЙрдиреНрд╣реЗрдВ 0.0 рд╕реЗ 1.0 рддрдХ рдХреА рд╕реАрдорд╛ рдореЗрдВ рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░рд┐рдгрд╛рдореА рдореВрд▓реНрдпреЛрдВ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдирд╛ рдпрд╛ рдЧреБрдгрд╛ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реЛрдЧрд╛ред

рдКрдВрдЪрд╛рдИ


рдЕрдкрдиреЗ рдЖрдк рдореЗрдВ рд╢реЛрд░ рдХреЗрд╡рд▓ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХрд╛ рдПрдХ рд╕рдВрдЧреНрд░рд╣ рд╣реИред рд╣рдореЗрдВ рдЗрд╕реЗ рдЕрд░реНрде рджреЗрдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ ред рдкрд╣рд▓реА рдЪреАрдЬ рдЬрд┐рд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЖрдк рд╕реЛрдЪ рд╕рдХрддреЗ рд╣реИрдВ, рд╡рд╣ рдпрд╣ рд╣реИ рдХрд┐ рд╢реЛрд░ рдХреЗ рдореВрд▓реНрдп рдХреЛ рдКрдБрдЪрд╛рдИ рдкрд░ рдмрд╛рдБрдз рджрд┐рдпрд╛ рдЬрд╛рдП (рдЗрд╕реЗ "рдКрдБрдЪрд╛рдИ рдХрд╛ рдирдХреНрд╢рд╛" рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ)ред рдЖрдЗрдП рдКрдкрд░ рджрд┐рдЦрд╛рдП рдЧрдП рд╢реЛрд░ рдХреЛ рд▓реЗрдВ рдФрд░ рдЗрд╕реЗ рдКрдВрдЪрд╛рдЗрдпреЛрдВ рдкрд░ рд▓реЗ рдЬрд╛рдПрдВ:



рдЖрдВрддрд░рд┐рдХ рд▓реВрдк рдХреЗ рдЕрдкрд╡рд╛рдж рдХреЗ рд╕рд╛рде рдХреЛрдб рд▓рдЧрднрдЧ рд╕рдорд╛рди рдерд╛ред рдЕрдм рдпрд╣ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:

 elevation[y][x] = noise(nx, ny); 

рд╣рд╛рдВ, рдФрд░ рдпрд╣ рдмрд╛рдд рд╣реИ рдорд╛рдирдЪрд┐рддреНрд░ рдбреЗрдЯрд╛ рд╕рдорд╛рди рд░рд╣рд╛, рд▓реЗрдХрд┐рди рдЕрдм рдореИрдВ рдЙрдиреНрд╣реЗрдВ elevation (рдКрдВрдЪрд╛рдИ) рдХрд╣реВрдВрдЧрд╛, value рдирд╣реАрдВред

рд╣рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд░реА рдкрд╣рд╛рдбрд╝рд┐рдпрд╛рдВ рдорд┐рд▓реАрдВ, рд▓реЗрдХрд┐рди рдЗрд╕рд╕реЗ рдЬреНрдпрд╛рджрд╛ рдХреБрдЫ рдирд╣реАрдВред рдХреНрдпрд╛ рдЧрд▓рдд рд╣реИ?

рдЖрд╡реГрддреНрддрд┐


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

рд╕реНрд▓рд╛рдЗрдбрд░ рдХреЗ рд╕рд╛рде рдорд╛рди рдмрджрд▓рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВ (рдореВрд▓ рд▓реЗрдЦ рдореЗрдВ) рдФрд░ рджреЗрдЦреЗрдВ рдХрд┐ рд╡рд┐рднрд┐рдиреНрди рдЖрд╡реГрддреНрддрд┐рдпреЛрдВ рдкрд░ рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИ:


рдпрд╣ рд╕рд┐рд░реНрдл рдкреИрдорд╛рдирд╛ рдмрджрд▓рддрд╛ рд╣реИред рдкрд╣рд▓реА рдмрд╛рд░ рдореЗрдВ рдпрд╣ рдмрд╣реБрдд рдЙрдкрдпреЛрдЧреА рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдРрд╕рд╛ рдирд╣реАрдВ рд╣реИред рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рдФрд░ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рд╣реИ (рд╣реИрдмреЗ рдореЗрдВ рдЕрдиреБрд╡рд╛рдж ), рдЬреЛ рд╕рд┐рджреНрдзрд╛рдВрдд рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХрд░рддрд╛ рд╣реИ : рдЖрд╡реГрддреНрддрд┐, рдЖрдпрд╛рдо, рдЕрд╖реНрдЯрдХ, рдЧреБрд▓рд╛рдмреА рдФрд░ рдиреАрд▓реЗ рд╢реЛрд░, рдФрд░ рдЗрд╕реА рддрд░рд╣ рдХреА рдЕрд╡рдзрд╛рд░рдгрд╛рдПрдВред

 elevation[y][x] = noise(freq * nx, freq * ny); 

рдпрд╣ рдХрднреА-рдХрднреА рд╡реЗрд╡рд▓реЗрдВрде рдХреЛ рдпрд╛рдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рднреА рдЙрдкрдпреЛрдЧреА рд╣реИ, рдЬреЛ рдкрд░рд┐рдорд╛рдг рдХрд╛ рдкрд╛рд░рд╕реНрдкрд░рд┐рдХ рд╣реИред рдЬрдм рдЖрд╡реГрддреНрддрд┐ рджреЛрдЧреБрдиреА рд╣реЛ рдЬрд╛рддреА рд╣реИ, рддреЛ рдЖрдХрд╛рд░ рдХреЗрд╡рд▓ рдЖрдзрд╛ рд╣реЛрддрд╛ рд╣реИред рддрд░рдВрдЧ рджреИрд░реНрдзреНрдп рдХреЛ рджреЛрдЧреБрдирд╛ рдХрд░рдирд╛ред рддрд░рдВрдЧ рджреИрд░реНрдзреНрдп рдкрд┐рдХреНрд╕рд▓ / рдЯрд╛рдЗрд▓ / рдореАрдЯрд░ рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рдЗрдХрд╛рдЗрдпреЛрдВ рдореЗрдВ рдорд╛рдкреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рджреВрд░реА рд╣реИ рдЬрд┐рд╕реЗ рдЖрдкрдиреЗ рдирдХреНрд╢реЗ рдХреЗ рд▓рд┐рдП рдЪреБрдирд╛ рд╣реИред рдпрд╣ рдЖрд╡реГрддреНрддрд┐ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИ: wavelength = map_size / frequency ред

рд╕рдкреНрдЯрдХ


рдКрдВрдЪрд╛рдИ рдХреЗ рдирдХреНрд╢реЗ рдХреЛ рдЕрдзрд┐рдХ рд░реЛрдЪрдХ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рд╡рд┐рднрд┐рдиреНрди рдЖрд╡реГрддреНрддрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рд╢реЛрд░ рдЬреЛрдбрд╝реЗрдВрдЧреЗ :



 elevation[y][x] = 1 * noise(1 * nx, 1 * ny); + 0.5 * noise(2 * nx, 2 * ny); + 0.25 * noise(4 * nx, 2 * ny); 

рдЖрдЗрдП рдПрдХ рдирдХреНрд╢реЗ рдореЗрдВ рдЫреЛрдЯреЗ рдЙрдЪреНрдЪ рдЖрд╡реГрддреНрддрд┐ рд╡рд╛рд▓реА рдкрд╣рд╛рдбрд╝рд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдмрдбрд╝реА рдХрдо рдЖрд╡реГрддреНрддрд┐ рд╡рд╛рд▓реА рдкрд╣рд╛рдбрд╝рд┐рдпреЛрдВ рдХреЛ рдорд┐рд▓рд╛рдПрдВред рдорд┐рд╢реНрд░рдг рдореЗрдВ рдЫреЛрдЯреА рдкрд╣рд╛рдбрд╝рд┐рдпреЛрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд▓рд╛рдЗрдбрд░ (рдореВрд▓ рд▓реЗрдЦ рдореЗрдВ) рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░реЗрдВ:


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

рдкреБрдирдГ рдЖрдмрдВрдЯрди


рд╢реЛрд░ рдлрд╝рдВрдХреНрд╢рди рд╣рдореЗрдВ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рдЖрдзрд╛рд░ рдкрд░ 0 рдФрд░ 1 (рдпрд╛ -1 рд╕реЗ +1 рдХреЗ рдмреАрдЪ рдХрд╛ рдорд╛рди рджреЗрддрд╛ рд╣реИ)ред рд╕рдорддрд▓ рдореИрджрд╛рди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдКрдВрдЪрд╛рдИ рдХреЛ рдПрдХ рд╢рдХреНрддрд┐ рддрдХ рдмрдврд╝рд╛ рд╕рдХрддреЗ рд╣реИрдВред рд╡рд┐рднрд┐рдиреНрди рдбрд┐рдЧреНрд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд▓рд╛рдЗрдбрд░ (рдореВрд▓ рд▓реЗрдЦ рдореЗрдВ) рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░реЗрдВ ред


 e = 1 * noise(1 * nx, 1 * ny); + 0.5 * noise(2 * nx, 2 * ny); + 0.25 * noise(4 * nx, 4 * ny); elevation[y][x] = Math.pow(e, exponent); 

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

рдЕрдм рдЬрдм рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдпрдерд╛рд░реНрдерд╡рд╛рджреА рдЙрдиреНрдирдпрди рдорд╛рдирдЪрд┐рддреНрд░ рд╣реИ, рддреЛ рд╣рдо рдмрд╛рдпреЛрдо рдХреЛ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ!

рдмрд╛рдпреЛрдо


рд╢реЛрд░ рдирдВрдмрд░ рджреЗрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдореЗрдВ рдЬрдВрдЧрд▓реЛрдВ, рд░реЗрдЧрд┐рд╕реНрддрд╛рдиреЛрдВ рдФрд░ рдорд╣рд╛рд╕рд╛рдЧрд░реЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдорд╛рдирдЪрд┐рддреНрд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдкрд╣рд▓реА рдЪреАрдЬрд╝ рдЬреЛ рдЖрдк рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рд╡рд╣ рд╣реИ рдкрд╛рдиреА рдореЗрдВ рдЫреЛрдЯреА рдКрдБрдЪрд╛рдИ:


 function biome(e) { if (e < waterlevel) return WATER; else return LAND; } 

рд╡рд╛рд╣, рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛рддреНрдордХ рд░реВрдк рд╕реЗ рдЙрддреНрдкрдиреНрди рджреБрдирд┐рдпрд╛ рдХреА рддрд░рд╣ рдмрди рд░рд╣рд╛ рд╣реИ! рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдкрд╛рдиреА, рдШрд╛рд╕ рдФрд░ рдмрд░реНрдл рд╣реИред рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдЕрдЧрд░ рд╣рдореЗрдВ рдФрд░ рдЕрдзрд┐рдХ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ? рдЪрд▓реЛ рдкрд╛рдиреА, рд░реЗрдд, рдШрд╛рд╕, рдЬрдВрдЧрд▓, рд╕рд╡рд╛рдирд╛, рд░реЗрдЧрд┐рд╕реНрддрд╛рди рдФрд░ рдмрд░реНрдл рдХрд╛ рдХреНрд░рдо рдмрдирд╛рддреЗ рд╣реИрдВ:



рдКрдВрдЪрд╛рдИ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд░рд╛рд╣рдд

 function biome(e) { if (e < 0.1) return WATER; else if (e < 0.2) return BEACH; else if (e < 0.3) return FOREST; else if (e < 0.5) return JUNGLE; else if (e < 0.7) return SAVANNAH; else if (e < 0.9) return DESERT; else return SNOW; } 

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



рдКрдкрд░ рдКрдВрдЪрд╛рдЗрдпреЛрдВ рдХрд╛ рд╢реЛрд░ рд╣реИ; рдиреАрдЪреЗ - рдирдореА рдХрд╛ рд╢реЛрд░

рдЕрдм рдПрдХ рд╕рд╛рде рдКрдВрдЪрд╛рдИ рдФрд░ рдЖрд░реНрджреНрд░рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ ред рдиреАрдЪреЗ рджрд┐рдЦрд╛рдИ рдЧрдИ рдкрд╣рд▓реА рдЫрд╡рд┐ рдореЗрдВ, y рдЕрдХреНрд╖ рдКрдБрдЪрд╛рдИ рд╣реИ (рдКрдкрд░ рдХреА рдЫрд╡рд┐ рд╕реЗ рд▓рд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ), рдФрд░ x рдЕрдХреНрд╖ рдЖрд░реНрджреНрд░рддрд╛ (рджреВрд╕рд░реА рдЫрд╡рд┐ рдЕрдзрд┐рдХ рд╣реИ)ред рдпрд╣ рд╣рдореЗрдВ рдПрдХ рд╕рдореНрдореЛрд╣рдХ рдирдХреНрд╢рд╛ рджреЗрддрд╛ рд╣реИ:



рджреЛ рд╢реЛрд░ рдореВрд▓реНрдпреЛрдВ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд░рд╛рд╣рдд

рдЫреЛрдЯреА рдКрдБрдЪрд╛рдИ рдорд╣рд╛рд╕рд╛рдЧрд░реЛрдВ рдФрд░ рддрдЯреЛрдВ рд╣реИрдВред рдорд╣рд╛рди рдКрдВрдЪрд╛рдЗрдпрд╛рдВ рдЪрдЯреНрдЯрд╛рдиреА рдФрд░ рдмрд░реНрдлреАрд▓реА рд╣реИрдВред рдмреАрдЪ рдореЗрдВ, рд╣рдореЗрдВ рдмрд╛рдпреЛрдо рдХреА рдПрдХ рд╡рд┐рд╕реНрддреГрдд рд╢реНрд░реГрдВрдЦрд▓рд╛ рдорд┐рд▓рддреА рд╣реИред рдХреЛрдб рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:

 function biome(e, m) { if (e < 0.1) return OCEAN; if (e < 0.12) return BEACH; if (e > 0.8) { if (m < 0.1) return SCORCHED; if (m < 0.2) return BARE; if (m < 0.5) return TUNDRA; return SNOW; } if (e > 0.6) { if (m < 0.33) return TEMPERATE_DESERT; if (m < 0.66) return SHRUBLAND; return TAIGA; } if (e > 0.3) { if (m < 0.16) return TEMPERATE_DESERT; if (m < 0.50) return GRASSLAND; if (m < 0.83) return TEMPERATE_DECIDUOUS_FOREST; return TEMPERATE_RAIN_FOREST; } if (m < 0.16) return SUBTROPICAL_DESERT; if (m < 0.33) return GRASSLAND; if (m < 0.66) return TROPICAL_SEASONAL_FOREST; return TROPICAL_RAIN_FOREST; } 

рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ, рддреЛ рдЖрдк рдЗрди рд╕рднреА рдореВрд▓реНрдпреЛрдВ рдХреЛ рдЕрдкрдиреЗ рдЦреЗрд▓ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВред

рдЕрдЧрд░ рд╣рдореЗрдВ рдмрд╛рдпреЛрдо рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рддреЛ рдЪрд┐рдХрдиреА рдЧреНрд░реЗрдбрд┐рдПрдВрдЯреНрд╕ ( рдЗрд╕ рд▓реЗрдЦ рдХреЛ рджреЗрдЦреЗрдВ ) рд░рдВрдЧ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ:



рдмрд╛рдпреЛрдо рдФрд░ рдЧреНрд░реЗрдбрд┐рдПрдВрдЯ рджреЛрдиреЛрдВ рдХреЗ рд▓рд┐рдП, рдПрдХ рдПрдХрд▓ рд╢реЛрд░ рдорд╛рди рдкрд░реНрдпрд╛рдкреНрдд рдкрд░рд┐рд╡рд░реНрддрдирд╢реАрд▓рддрд╛ рдкреНрд░рджрд╛рди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рджреЛ рдкрд░реНрдпрд╛рдкреНрдд рд╣реИред

рдЬрд▓рд╡рд╛рдпреБ


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


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

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

рджреНрд╡реАрдк


рдХреБрдЫ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ, рдореБрдЭреЗ рдкрд╛рдиреА рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдирдХреНрд╢реЗ рдХреА рд╕реАрдорд╛рдУрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереАред рдпрд╣ рджреБрдирд┐рдпрд╛ рдХреЛ рдПрдХ рдпрд╛ рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рджреНрд╡реАрдкреЛрдВ рдореЗрдВ рдмрджрд▓ рджреЗрддрд╛ рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рдХрдИ рддрд░реАрдХреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рдЕрдкрдиреЗ рдмрд╣реБрднреБрдЬ рдорд╛рдирдЪрд┐рддреНрд░ рдЬрдирд░реЗрдЯрд░ рдореЗрдВ рдХрд╛рдлреА рд╕рд░рд▓ рд╕рдорд╛рдзрд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛: рдореИрдВрдиреЗ рдКрдВрдЪрд╛рдИ рдХреЛ e = e + a - b*d^c рд░реВрдк рдореЗрдВ рдмрджрд▓ рджрд┐рдпрд╛, рдЬрд╣рд╛рдВ d рдХреЗрдВрджреНрд░ рд╕реЗ рджреВрд░реА (0-1 рдХреЗ рдкреИрдорд╛рдиреЗ рдкрд░) рд╣реИред рдПрдХ рдЕрдиреНрдп рд╡рд┐рдХрд▓реНрдк e = (e + a) * (1 - b*d^c) рдХреЛ рдмрджрд▓рдирд╛ рд╣реИред рдирд┐рд░рдВрддрд░ рд╕рдм рдХреБрдЫ рдКрдкрд░ рдЙрдард╛рддрд╛ рд╣реИ, b рдХрд┐рдирд╛рд░реЛрдВ рдХреЛ рдХрдо рдХрд░рддрд╛ рд╣реИ, рдФрд░ c рдЧрд┐рд░рд╛рд╡рдЯ рдХреА рджрд░ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рддрд╛ рд╣реИред


рдореИрдВ рдЗрд╕рд╕реЗ рдкреВрд░реА рддрд░рд╣ рд╕рдВрддреБрд╖реНрдЯ рдирд╣реАрдВ рд╣реВрдВ рдФрд░ рдмрд╣реБрдд рдХреБрдЫ рдкрддрд╛ рд▓рдЧрд╛рдпрд╛ рдЬрд╛рдирд╛ рдмрд╛рдХреА рд╣реИред рдХреНрдпрд╛ рдпрд╣ рдореИрдирд╣рдЯреНрдЯрди рдпрд╛ рдпреВрдХреНрд▓рд┐рдбрд┐рдпрди рджреВрд░реА рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП? рдХреНрдпрд╛ рдпрд╣ рдХреЗрдВрджреНрд░ рдХреА рджреВрд░реА рдпрд╛ рдХрд┐рдирд╛рд░реЗ рдХреА рджреВрд░реА рдкрд░ рдирд┐рд░реНрднрд░ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП? рдХреНрдпрд╛ рджреВрд░реА рдЪреБрдХрд╛рдиреА рдЪрд╛рд╣рд┐рдП, рдпрд╛ рд░реИрдЦрд┐рдХ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдпрд╛ рдХреБрдЫ рдЕрдиреНрдп рдбрд┐рдЧреНрд░реА рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП? рдХреНрдпрд╛ рдпрд╣ рдЬреЛрдбрд╝ / рдШрдЯрд╛рд╡, рдпрд╛ рдЧреБрдгрд╛ / рднрд╛рдЧ, рдпрд╛ рдХреБрдЫ рдФрд░ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП? рдореВрд▓ рд▓реЗрдЦ рдореЗрдВ, Add a = 0.1, b = 0.3, c = 2.0, рдпрд╛ рдорд▓реНрдЯреАрдкреНрд▓реА, a = 0.05, b = 1.00, c = 1.5 рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред рдЖрдкрдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рд╡рд┐рдХрд▓реНрдк рдЖрдкрдХреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддреЗ рд╣реИрдВред

рдХреНрдпреЛрдВ рдЧрдгрд┐рдд рдХреЗ рдорд╛рдирдХ рдХрд╛рд░реНрдпреЛрдВ рд╕реЗ рдмрд┐рд▓реНрдХреБрд▓ рдЪрд┐рдкрдХреЗ рд░рд╣рддреЗ рд╣реИрдВ? рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдЕрдкрдиреЗ рд▓реЗрдЦ рдореЗрдВ рдЖрд░рдкреАрдЬреА рдореЗрдВ рдиреБрдХрд╕рд╛рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрддрд╛рдпрд╛ (рд╣реИрдмреЗ рдкрд░ рдЕрдиреБрд╡рд╛рдж ), рд╣рд░ рдХреЛрдИ (рдореЗрд░реЗ рд╕рд╣рд┐рдд) рдЧрдгрд┐рддреАрдп рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдЬреИрд╕реЗ рдХрд┐ рдмрд╣реБрдкрдж, рдШрд╛рддреАрдп рд╡рд┐рддрд░рдг, рдЖрджрд┐, рд▓реЗрдХрд┐рди рдХрдВрдкреНрдпреВрдЯрд░ рдкрд░ рд╣рдо рдЙрдирдХреЗ рд▓рд┐рдП рд╕реАрдорд┐рдд рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред рд╣рдо e = e + height_adjust[d] рдЯреЗрдмрд▓ e = e + height_adjust[d] рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд┐рд╕реА рднреА рдЧрдарди рдлрд╝рдВрдХреНрд╢рди рдХреЛ рд▓реЗ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЕрднреА рддрдХ рдореИрдВрдиреЗ рдЗрд╕ рдореБрджреНрджреЗ рдХрд╛ рдЕрдзреНрдпрдпрди рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИред

рд╕реНрдкрд╛рдЗрдХреА рд╢реЛрд░


рдКрдВрдЪрд╛рдИ рдХреЛ рдПрдХ рд╢рдХреНрддрд┐ рддрдХ рдмрдврд╝рд╛рдиреЗ рдХреЗ рдмрдЬрд╛рдп, рд╣рдо рддреАрдЦреЗ рд╢рд┐рдЦрд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рд░рдкреЗрдХреНрд╖ рдореВрд▓реНрдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

 function ridgenoise(nx, ny) { return 2 * (0.5 - abs(0.5 - noise(nx, ny))); } 

рдСрдХреНрдЯреЗрд╡реНрд╕ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдЙрдЪреНрдЪ рдЖрд╡реГрддреНрддрд┐рдпреЛрдВ рдХреЗ рдЖрдпрд╛рдо рдХреЛ рднрд┐рдиреНрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рдХреЗрд╡рд▓ рдкрд╣рд╛рдбрд╝реЛрдВ рдХреЛ рдЕрддрд┐рд░рд┐рдХреНрдд рд╢реЛрд░ рдкреНрд░рд╛рдкреНрдд рд╣реЛ:

 e0 = 1 * ridgenoise(1 * nx, 1 * ny); e1 = 0.5 * ridgenoise(2 * nx, 2 * ny) * e0; e2 = 0.25 * ridgenoise(4 * nx, 4 * ny) * (e0+e1); e = e0 + e1 + e2; elevation[y][x] = Math.pow(e, exponent); 


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

рдЫрддреЛрдВ


рдпрджрд┐ рд╣рдо рдЕрдЧрд▓реЗ n рд╕реНрддрд░реЛрдВ рдХреА рдКрдБрдЪрд╛рдИ рдХреЛ рдЧреЛрд▓ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╣рдореЗрдВ рдЫрддреЗрдВ рдорд┐рд▓рддреА рд╣реИрдВ:


рдпрд╣ e = f(e) рд░реВрдк рдореЗрдВ рдКрдВрдЪрд╛рдИ рдкреБрдирд░реНрд╡рд┐рддрд░рдг рд╕рдорд╛рд░реЛрд╣ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХрд╛ рдкрд░рд┐рдгрд╛рдо рд╣реИред рдКрдкрд░, рд╣рдордиреЗ рдкрд░реНрд╡рдд рдЪреЛрдЯрд┐рдпреЛрдВ рдХреЛ рддреЗрдЬ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП e = Math.pow(e, exponent) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛; рдпрд╣рд╛рдБ рд╣рдо e = Math.round(e * n) / n рд▓рд┐рдП e = Math.round(e * n) / n рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдпрджрд┐ рдЖрдк рдПрдХ рдЧреИрд░-рдЪрд░рдг рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЫрддреЛрдВ рдХреЛ рдЧреЛрд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдпрд╛ рдХреЗрд╡рд▓ рдХреБрдЫ рдКрдВрдЪрд╛рдЗрдпреЛрдВ рдкрд░ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

рд╡реГрдХреНрд╖ рд▓рдЧрд╛рдиреЗ рдХрд╛ рд╕реНрдерд╛рди


рдЖрдорддреМрд░ рдкрд░ рд╣рдо рдКрдВрдЪрд╛рдИ рдФрд░ рдЖрд░реНрджреНрд░рддрд╛ рдХреЗ рд▓рд┐рдП рднрдЧреНрди рд╢реЛрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рдереЗ, рд▓реЗрдХрд┐рди рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдЕрд╕рдорд╛рди рд░реВрдк рд╕реЗ рдлреИрд▓реА рд╡рд╕реНрддреБрдУрдВ, рдЬреИрд╕реЗ рдХрд┐ рдкреЗрдбрд╝реЛрдВ рдФрд░ рдкрддреНрдерд░реЛрдВ рдХреЛ рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рднреА рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдКрдВрдЪрд╛рдИ рдХреЗ рд▓рд┐рдП рд╣рдо рдХрдо рдЖрд╡реГрддреНрддрд┐рдпреЛрдВ ("рд▓рд╛рд▓ рд╢реЛрд░") рдХреЗ рд╕рд╛рде рдЙрдЪреНрдЪ рдЖрдпрд╛рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рд╡рд╕реНрддреБрдУрдВ рдХреЛ рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдЙрдЪреНрдЪ рдЖрд╡реГрддреНрддрд┐рдпреЛрдВ ("рдиреАрд▓рд╛ рд╢реЛрд░") рдХреЗ рд╕рд╛рде рдЙрдЪреНрдЪ рдЖрдпрд╛рдореЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдмрд╛рдИрдВ рдУрд░ рдПрдХ рдиреАрд▓рд╛ рд╢реЛрд░ рдкреИрдЯрд░реНрди рд╣реИ; рджрд╛рдИрдВ рдУрд░ рд╡реЗ рд╕реНрдерд╛рди рд╣реИрдВ рдЬрд╣рд╛рдВ рд╢реЛрд░ рдЖрд╕рдиреНрди рдореВрд▓реНрдпреЛрдВ рд╕реЗ рдЕрдзрд┐рдХ рд╣реИ:


 for (int yc = 0; yc < height; yc++) { for (int xc = 0; xc < width; xc++) { double max = 0; //     for (int yn = yc - R; yn <= yc + R; yn++) { for (int xn = xc - R; xn <= xc + R; xn++) { double e = value[yn][xn]; if (e > max) { max = e; } } } if (value[yc][xc] == max) { //    xc,yc } } } 

рдкреНрд░рддреНрдпреЗрдХ рдмрд╛рдпреЛрдо рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЖрд░ рдЪреБрдирдирд╛, рд╣рдо рдкреЗрдбрд╝реЛрдВ рдХрд╛ рдПрдХ рдЪрд░ рдШрдирддреНрд╡ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:



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

рдЕрдирдВрдд рдФрд░ рдкрд░реЗ


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



рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди


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

  • рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ:

     let gen = new SimplexNoise(); function noise(nx, ny) { // Rescale from -1.0:+1.0 to 0.0:1.0 return gen.noise2D(nx, ny) / 2 + 0.5; } let value = []; for (let y = 0; y < height; y++) { value[y] = []; for (let x = 0; x < width; x++) { let nx = x/width - 0.5, ny = y/height - 0.5; value[y][x] = noise(nx, ny); } } 
  • C ++:

     module::Perlin gen; double noise(double nx, double ny) { // Rescale from -1.0:+1.0 to 0.0:1.0 return gen.GetValue(nx, ny, 0) / 2.0 + 0.5; } double value[height][width]; for (int y = 0; y < height; y++) { for (int x = 0; x < width; x++) { double nx = x/width - 0.5, ny = y/height - 0.5; value[y][x] = noise(nx, ny); } } 
  • рдЕрдЬрдЧрд░:

     from opensimplex import OpenSimplex gen = OpenSimplex() def noise(nx, ny): # Rescale from -1.0:+1.0 to 0.0:1.0 return gen.noise2d(nx, ny) / 2.0 + 0.5 value = [] for y in range(height): value.append([0] * width) for x in range(width): nx = x/width - 0.5 ny = y/height - 0.5 value[y][x] = noise(nx, ny) 

рд╕рднреА рд╢реЛрд░ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдмрд╣реБрдд рд╕рдорд╛рди рд╣реИрдВред рдкрд╛рдпрдерди рдХреЗ рд▓рд┐рдП рдУрдкрдирд╕рд┐рдореНрдкреНрд▓реЗрдХреНрд╕ рдЖрдЬрд╝рдорд╛рдПрдВ, рдпрд╛ C ++ рдХреЗ рд▓рд┐рдП рдпрд╛ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд▓рд┐рдП рд╕рд┐рдореНрдкреНрд▓реЗрдХреНрд╕-рдиреЙрдЗрдЬрд╝ рдХрд╛ рдкреНрд░рдпреЛрдЧ рдХрд░реЗрдВ ред рдЕрдзрд┐рдХрд╛рдВрд╢ рд▓реЛрдХрдкреНрд░рд┐рдп рднрд╛рд╖рд╛рдУрдВ рдХреЗ рд▓рд┐рдП, рдХрдИ рд╢реЛрд░ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╣реИрдВред рдпрд╛ рдЖрдк рдЬрд╛рди рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдкреЗрд░реНрд▓рд┐рди рд╢реЛрд░ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдпрд╛ рд╢реЛрд░ рдХреЛ рдЦреБрдж рдорд╣рд╕реВрд╕ рдХрд░рддрд╛ рд╣реИ рдореИрдВрдиреЗ рдРрд╕рд╛ рдирд╣реАрдВ рдХрд┐рдпрд╛

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

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

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

рдкреНрд░рдпреЛрдЧреЛрдВ


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


рдпрд╣рд╛рдБ рдПрдХ рдирдореВрдирд╛ рдХреЛрдб рд╣реИ:

 var rng1 = PM_PRNG.create(seed1); var rng2 = PM_PRNG.create(seed2); var gen1 = new SimplexNoise(rng1.nextDouble.bind(rng1)); var gen2 = new SimplexNoise(rng2.nextDouble.bind(rng2)); function noise1(nx, ny) { return gen1.noise2D(nx, ny)/2 + 0.5; } function noise2(nx, ny) { return gen2.noise2D(nx, ny)/2 + 0.5; } for (var y = 0; y < height; y++) { for (var x = 0; x < width; x++) { var nx = x/width - 0.5, ny = y/height - 0.5; var e = (1.00 * noise1( 1 * nx, 1 * ny) + 0.50 * noise1( 2 * nx, 2 * ny) + 0.25 * noise1( 4 * nx, 4 * ny) + 0.13 * noise1( 8 * nx, 8 * ny) + 0.06 * noise1(16 * nx, 16 * ny) + 0.03 * noise1(32 * nx, 32 * ny)); e /= (1.00+0.50+0.25+0.13+0.06+0.03); e = Math.pow(e, 5.00); var m = (1.00 * noise2( 1 * nx, 1 * ny) + 0.75 * noise2( 2 * nx, 2 * ny) + 0.33 * noise2( 4 * nx, 4 * ny) + 0.33 * noise2( 8 * nx, 8 * ny) + 0.33 * noise2(16 * nx, 16 * ny) + 0.50 * noise2(32 * nx, 32 * ny)); m /= (1.00+0.75+0.33+0.33+0.33+0.50); /* draw biome(e, m) at x,y */ } } 

рдПрдХ рдХрдард┐рдирд╛рдИ рд╣реИ: рдКрдВрдЪрд╛рдЗрдпреЛрдВ рдФрд░ рдЖрд░реНрджреНрд░рддрд╛ рдХреЗ рд╢реЛрд░ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд▓рдЧ рдмреАрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рдЕрдиреНрдпрдерд╛ рд╡реЗ рд╕рдорд╛рди рд╣реЛ рдЬрд╛рдПрдВрдЧреЗ, рдФрд░ рдХрд╛рд░реНрдб рдЗрддрдиреЗ рджрд┐рд▓рдЪрд╕реНрдк рдирд╣реАрдВ рджрд┐рдЦреЗрдВрдЧреЗред рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ, рдореИрдВ prng-parkmiller рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ ; C ++ рдореЗрдВ, рдЖрдк рджреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд░реИрдЦрд┐рдХ_рд╕рдВрдЧреНрд░рд╣рд╛рддреНрдордХ_рдХреЗрди рд╡рд╕реНрддреБрдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ; рдкрд╛рдпрдерди рдореЗрдВ, рдЖрдк рдПрдХ рд░реИрдВрдбрдо рд░реИрдВрдбрдо рдХреНрд▓рд╛рд╕ рдХреЗ рджреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред

рд╡рд┐рдЪрд╛рд░реЛрдВ


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

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

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

рдЕрддрд┐рд░рд┐рдХреНрдд рдЬрд╛рдирдХрд╛рд░реА


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

рдпрд╣ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрд░реА рдкрд┐рдЫрд▓реА рдорд╛рдирдЪрд┐рддреНрд░ рдкреАрдврд╝реА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рд╕реЗ рдкреНрд░рднрд╛рд╡рд┐рдд рдереА:

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

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

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

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


All Articles