рд╡реЛрд▓реНрдлреЗрдВрд╕реНрдЯрд┐рдиреА 3 рдбреА - рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд░рд┐рд╡рд░реНрд╕ рдЗрдВрдЬреАрдирд┐рдпрд░рд┐рдВрдЧ 251 рдмрд╛рдЗрдЯреНрд╕

рдХреЛрдб рд▓рд┐рдЦрддреЗ рд╕рдордп, рдХрдИ рд▓реЛрдЧ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рддрд░реНрдХ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдХреБрдЫ рднреА рдирд╣реАрдВ рд╕реЛрдЪрддреЗ рд╣реИрдВред рдХреБрдЫ рд▓реЛрдЧ рд╕реНрдореГрддрд┐ рд╕реЗ, рд╕рдордп рдХреЗ рд╕рд╛рде рдХреЛрдб рдХреЗ рдЕрдиреБрдХреВрд▓рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рдХреБрдЫ рд╣реА рдЕрдВрддрд┐рдо рд╕реНрддрд░ рддрдХ рдкрд╣реБрдВрдЪрддреЗ рд╣реИрдВ - рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ рд░рд┐рдХреЙрд░реНрдб рдЫреЛрдЯреЗ рдЖрдХрд╛рд░ рддрдХ рд╕рдВрдкреАрдбрд╝рд┐рдд рдХрд░рдирд╛ред

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд╕рд┐рд░реНрдл 251 рдмрд╛рдЗрдЯреНрд╕ рдХреЗ рдкрд░рд┐рдгрд╛рдо рдкрд░ рджреЗрдЦреЗрдВ:


рдЦреИрд░, рдЖрдЗрдП рдЬрд╛рдиреЗрдВ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ!

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

рддреЛ, рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐ рдЖрдк рд╕реНрд░реЛрдд рдХреЛрдб рдХреЗ рдмрд╣реБрдд 251 рдмрд╛рдЗрдЯреНрд╕ рд╣реИрдВред

<body onload=E=c.getContext("2d"),setInterval(F="t+=.2,Q=Math.cos;c.height=300;for(x=h;x--;)for(y=h;y--;E.fillRect(x*4,y*4,bd?4:D/2,D/2))for(D=0;'.'<F[D*y/hD/2|0?1:(d=t+D*Q(T=x/h-.5+Q(t)/8)&7)|(3.5+D*Q(T-8))<<3]&&D<8;b=d)D+=.1",t=h=75)><canvas id=c> 

рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рдХреБрдЫ рднреА рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИред

рдХреЛрдб рдХреЛ рдкрдардиреАрдп рдмрдирд╛рдирд╛


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

рдпрд╣ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЪрд░ E , h , Q , F рдФрд░ рдЕрдиреНрдп рдРрд╕реЗ рд╕реНрдерд┐рд░рд╛рдВрдХ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдЙрдирдХреЗ рдореВрд▓реНрдпреЛрдВ / рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд╕рд╛рде рд╕реНрд╡рдпрдВ рдмрджрд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд╕рд╛рде рд╣реА рдирд╛рдо рднреА рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВред

 var context = c.getContext("2d") var F="t+=.2,Q=Math.cos;c.height=300;for(x=h;x--;)for(y=h;y--;E.fillRect(x*4,y*4,bd?4:D/2,D/2))for(D=0;'.'<F[D*y/hD/2|0?1:(d=t+D*Q(T=x/h-.5+Q(t)/8)&7)|(3.5+D*Q(T-8))<<3]&&D<8;b=d)D+=.1" var t = 75 var size = 75 function render(){ t += 0.2; c.height=300; for(let x = size; x--;) for(let y = size; y--; context.fillRect(x * 4,y * 4,b - d? 4 : D / 2, D / 2)) for(var D = 0; '.' < F[D * y / size - D / 2 | 0 ? 1 : (d = t + D * Math.cos(T = x / size - 0.5 + Math.cos(t) / 8) & 7) | (3.5 + D * Math.cos(T - 8)) << 3] && D < 8; b = d) D += 0.1 } setInterval(render, 75); 

рдпрд╣рд╛рдВ, рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╕реЗ рдХреЛрдб рдХреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рд▓реЗ рдЬрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдФрд░ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╕реНрд╡рдпрдВ рдЕрдЫреВрддрд╛ рд╣реИ, рд╣рдореЗрдВ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред

рдЕрдм рджреЛ рдмрд╛рд╣рд░реА рдЫреЛрд░реЛрдВ рдХреЛ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рддреЗ while ред

 function render(){ t += 0.2; c.height=300; let x = size; while(x > 0){ let y = size; while(y > 0){ for(var D = 0; '.' < F[D * y / size - D / 2 | 0 ? 1 : (d = t + D * Math.cos(T = x / size - 0.5 + Math.cos(t) / 8) & 7) | (3.5 + D * Math.cos(T - 8)) << 3] && D < 8; b = d) D += 0.1 context.fillRect(x * 4,y * 4,b - d? 4 : D / 2, D / 2); y--; } x--; } } 

рд╣рдо рдЗрд╕реЗ рдХреИрд╕реЗ рджреЗрдЦрддреЗ рд╣реИрдВ?


рдЖрдЗрдП рд╕рдордЭрддреЗ рд╣реИрдВ рдХрд┐ рд╣рдо рдЗрд╕реЗ рдмрд┐рд▓реНрдХреБрд▓ рдХреНрдпреЛрдВ рджреЗрдЦрддреЗ рд╣реИрдВред рдпрджрд┐ рдЖрдк рддрд╕реНрд╡реАрд░ рдХреЛ рдлрд┐рд░ рд╕реЗ рджреЗрдЦрддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдмрд╣реБрдд рдХреБрдЫ рд╕рдордЭ рд╕рдХрддреЗ рд╣реИрдВред

рдХреНрд▓рд┐рдХ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдЫрд╡рд┐

рдпрд╣рд╛рдБ рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ:

  1. рд╡рд┐рд╖рдп рдЬрд┐рддрдирд╛ рджреВрд░ рд╣реИ, рдЙрддрдирд╛ рд╣реА рдЧрд╣рд░рд╛ рд╣реИ
  2. рд╕рд╛рдордирд╛ рдХреА рдЧрдИ рдмрд╛рдзрд╛рдУрдВ рдХрд╛ рддрд┐рд░рдЫрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд▓рд╛рдЗрдиреЛрдВ рдХреЗ рд╕рд╛рде рдЕрд▓рдЧ-рдЕрд▓рдЧ рддрд░реАрдХреЗ рд╕реЗ рднрд░рд╛ рд╣реБрдЖ рд╣реИ, рдбреЙрдЯреНрд╕ рдирд╣реАрдВред

рдХреЛрдб рдореЗрдВ, рдбреНрд░рд╛рдЗрдВрдЧ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдкрд░рд┐рд▓рдХреНрд╖рд┐рдд рд╣реЛрддрд╛ рд╣реИ:

 // ,  ,       //   ||     // | | || | | // тЖУ тЖУ тЖУтЖУ тЖУ тЖУ context.fillRect(x * 4,y * 4,b - d? 4 : D / 2, D / 2); 

рд╣рдо рдмреНрд▓реИрдХ рдбреЙрдЯреНрд╕ рдХреА рдЗрд╕ рдмрд╛рдврд╝ рдореЗрдВ рд╡реЙрд▓реНрдпреВрдореЗрдЯреНрд░рд┐рдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреНрдпреЛрдВ рджреЗрдЦрддреЗ рд╣реИрдВ? рдЖрдЦрд┐рд░рдХрд╛рд░, рд╣рдореЗрдВ рдХреЗрд╡рд▓ рдХрд╛рд▓реЗ рд░рдВрдЧ рдХреЗ рд╡рд┐рднрд┐рдиреНрди рд░рдВрдЧреЛрдВ рдХреЗ рд╕рд╛рде E.fillStyle рдХрд░рдирд╛ рд╣реЛрдЧрд╛ - рдХрд╛рд▓реЗ рдбреЙрдЯреНрд╕ рдХрд╛ рдЖрдХрд╛рд░ (рд╣рдо рд░рдВрдЧ рдирд╣реАрдВ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ, E.fillStyle рдмрд╣реБрдд рд▓рдВрдмрд╛ рд╣реИ!)ред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдпрд╣ рдХреЗрд╡рд▓ рдЗрд╕рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рджреЛ-рдЖрдпрд╛рдореА рдЪрд┐рддреНрд░ рдореЗрдВ, рд╣рдорд╛рд░реА рдЖрдВрдЦ рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдкреНрд░рдХрд╛рд╢ рдХреА рдЫрд╛рдпрд╛ рдФрд░ рдЪрдордХ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддреА рд╣реИред

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

рдкрд┐рдХреНрд╕реЗрд▓ рдХреА рдЧрдгрдирд╛ рдХрд░реЗрдВ


рдЕрдм рдЗрд╕ рд░рд╛рдХреНрд╖рд╕ рд╕реЗ рдирд┐рдкрдЯреЗрдВ:

 for(var D = 0; '.' < F[D * y / size - D / 2 | 0 ? 1 : (d = t + D * Math.cos(T = x / size - 0.5 + Math.cos(t) / 8) & 7) | (3.5 + D * Math.cos(T - 8)) << 3] && D < 8; b = d) D += 0.1 

So. рдпрд╣ рд╕рднреА рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдЪрд░рдг рдХрд┐рд░рдгрдордп рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рдмреНрд▓реЙрдХ рдХреЗ рд╕рд╛рде рдмреАрдо рдХреЗ рдЪреМрд░рд╛рд╣реЗ рдХреЛ рдЦреЛрдЬрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рд╕реНрдХреНрд░реАрди рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рдкрд┐рдХреНрд╕реЗрд▓ рдХреЗ рд▓рд┐рдП, рд╣рдо рдПрдХ рдмреАрдо рд▓реЙрдиреНрдЪ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рд╣рдо рдЗрд╕реЗ 0.1 рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдЪрд░рдг рдХреЗ рд╕рд╛рде рдкрд╛рд▓рди рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдЬреИрд╕реЗ рд╣реА рд╣рдо рдПрдХ рдмрд╛рдзрд╛ рдХреЛ рдкреВрд░рд╛ рдХрд░рддреЗ рд╣реИрдВ, рд╣рдо рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рд╕реНрдХреНрд░реАрди рдкрд░ рдПрдХ рдкрд┐рдХреНрд╕реЗрд▓ рдЦреАрдВрдЪрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рд╕реЗ рдмрд╛рдзрд╛ рдХреА рджреВрд░реА рдкрддрд╛ рдЪрд▓рддреА рд╣реИред

рдЖрдЗрдП рдЗрд╕ рдХреЛрдб рдХреЛ рднрд╛рдЧреЛрдВ рдореЗрдВ рдкрдврд╝рдирд╛ рд╢реБрд░реВ рдХрд░реЗрдВред

рд╢рд░реНрдд D * y / size - D / 2 | 0 D * y / size - D / 2 | 0 рд░реВрдк рдореЗрдВ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ DтИЧ( fracysizeтИТ frac12)=DтИЧ( fracyтИТsize/2size)<1, рдлрд┐рд░ рдХреЛрд╖реНрдардХ рдореЗрдВ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рд╕реНрдХреНрд░реАрди рдХреЗ рдХреЗрдВрджреНрд░ рд╕реЗ "рд╡рд┐рдЪрд▓рди" рджрд┐рдЦрд╛рдПрдЧрд╛ (рд╕реНрдХреНрд░реАрди рдХреЗ рдЕрдВрд╢реЛрдВ рдореЗрдВ)ред рдЗрд╕рд▓рд┐рдП рд╣рдо рдпрд╣ рд╕рдордЭрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдХрд┐ рдмреАрдо рдлрд░реНрд╢ рдФрд░ рдЫрдд рдХреЗ рдмреАрдЪ рд╣реИ рдпрд╛ рдирд╣реАрдВред рдЗрд╕рд▓рд┐рдП, рдпрджрд┐ рд╣рдо рдлрд░реНрд╢ (рдпрд╛ рдЫрдд) рдХреЛ рдЫреВрддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рдкрд┐рдХреНрд╕реЗрд▓ рдХреЛ рдЦреАрдВрдЪрдиреЗ рдФрд░ рдЦреАрдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рд▓реВрдк рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд▓рддреЗ рд╣реИрдВред
рдФрд░ рдпрджрд┐ рд╣рдо рд╕реНрдкрд░реНрд╢ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рдЧрдгрдирд╛ рдЬрд╛рд░реА рд░рдЦрддреЗ рд╣реИрдВ: рд╣рдо рдмреАрдо рдХреЗ рд╡рд░реНрддрдорд╛рди рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдХреА рдЦреЛрдЬ рдХрд░рддреЗ рд╣реИрдВред

 var T = x / size - .5 + Math.cos(t) / 8; // Math.cos(t)   //    var xcoord = t + depth * Math.cos(T); var ycoord = 3.5 + depth * Math.cos(T - 8); // 

рдХреНрдпреЛрдВ cos (T - 8)?
рддреЛ рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ cos(xтИТ8) рд▓рдЧрднрдЧрдкрд╛рдк(x)0.15 рд░реЗрдбрд┐рдпрди рдХреА рд╕рдЯреАрдХрддрд╛ рдХреЗ рд╕рд╛рдеред рд╕рднреА рдХреНрдпреЛрдВрдХрд┐

 frac5 pi2 рдЕрдиреБрдорд╛рдирд┐рдд8.15 рд▓рдЧрднрдЧ8


рдФрд░ рдлрд┐рд░

cos( AlphaтИТ8) рд▓рдЧрднрдЧcos( AlphaтИТ frac5 pi2)=cos( AlphaтИТ frac pi2)=sin( рдЕрд▓реНрдлрд╛)



рдпрд╣ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рдиреЗ рд▓рд╛рдпрдХ рд╣реИ рдХрд┐ рдЕрдВрддрд░рд┐рдХреНрд╖ рдореЗрдВ рдПрдХ рдмрд┐рдВрджреБ рдХреЛ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдмреНрд▓реЙрдХ рдХреЗ рд▓рд┐рдП рдХреИрд╕реЗ рдЬрд╛рдВрдЪрд╛ рдЬрд╛рддрд╛ рд╣реИред рдХрд╛рд░реНрдб рд╕реНрд╡рдпрдВ рд╕реНрд░реЛрдд рдХреЛрдб ( F ) рд╕реЗ рд▓рд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:
 t+=.2,Q= ----> тЦСтЦИтЦСтЦИтЦСтЦИтЦСтЦС Math.cos ----> тЦСтЦСтЦСтЦСтЦИтЦСтЦСтЦС ;c.heigh ----> тЦСтЦСтЦИтЦСтЦСтЦСтЦСтЦС   - t=300;fo ----> тЦСтЦСтЦСтЦСтЦСтЦСтЦСтЦС <----  , r(x=h;x- ----> тЦСтЦИтЦСтЦСтЦСтЦСтЦСтЦИ     -;)for(y ----> тЦИтЦСтЦИтЦСтЦСтЦСтЦИтЦС =h;y--;E ----> тЦСтЦСтЦСтЦСтЦИтЦИтЦСтЦС .fillRec ----> тЦИтЦСтЦСтЦСтЦСтЦСтЦСтЦС 

рддреЛ рдпрд╣ рдЧрддрд┐ рдореЗрдВ рдЬреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИ, рдХреИрдорд░реЗ рдХреЗ рджреЗрдЦрдиреЗ рдХрд╛ рдХреНрд╖реЗрддреНрд░ рдпрд╣рд╛рдВ рдЗрдВрдЧрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рд╡реЗ рдХреЛрд╢рд┐рдХрд╛рдПрдВ рдЬрд┐рдирдХрд╛ рдкреНрд░рддреАрдХ рдХреЛрдб рдмрд┐рдВрджреБ рдХреЛрдб рд╕реЗ рдХрдо рд╣реИ - "." рдЕрдВрдзреЗрд░реЗ рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд рд╣реИрдВ "." - рд╡рд╣ рд╣реИ, рд╡рд░реНрдг !"#$%&'()*+,-. рдЕрдм рд╣рдо рдмреАрдо рдХреЗ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдХреЛ рдЧреЛрд▓ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдЗрди" рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ "рдореЗрдВ рдЕрдХреНрд╖рд░ рдЕрдВрдзреЗрд░рд╛ рд╣реИ (рдПрдХ рдмрд╛рдзрд╛) рдпрд╛ рдирд╣реАрдВ (рд╣рдо рдмреАрдо рдХреЛ рдФрд░ рдЖрдЧреЗ рдмрдврд╝рд╛рддреЗ рд╣реИрдВ)ред

рдЪреВрдВрдХрд┐ рдЗрдВрдбреЗрдХреНрд╕ рдПрдХ рд╣реИ, рдФрд░ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рджреЛ рд╣реИрдВ, рддреЛ рд╣рдо рд╣реИрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ:

 var boxIndex = xcoord & 7 | ycoord << 3; 

рдирддреАрдЬрддрди, рд╣рдореЗрдВ рдПрдХ рд╕рдВрдЦреНрдпрд╛ рдорд┐рд▓рддреА рд╣реИ рдЬреЛ рдмреНрд▓реЙрдХ рд╕рдВрдЦреНрдпрд╛ (рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ, рдпрд╛ voids) рдХреЛ рджрд░реНрд╢рд╛рддреА рд╣реИред

рдХреЛрдб рдкрд░ рд╡рд╛рдкрд╕ рдЬрд╛рддреЗ рд╣реИрдВред рдЕрдм рд╡рд╣ рд╕рднреНрдп рджрд┐рдЦ рд░рд╣рд╛ рд╣реИред

рдХреЛрдб рдереЛрдбрд╝рд╛ рдореЛрдЯрд╛ рд╣реИ
 function render(){ t += 0.2; c.height=300; let x = size; while(x > 0){ let y = size; while(y > 0){ var depth = 0 while(depth < 8){ depth += 0.1 var T = x / size - .5 + Math.cos(t) / 8; //   var isFloorOrCeiling = depth * y / size - depth / 2 | 0; //      ? if(isFloorOrCeiling) break; var xcoord = t + depth * Math.cos(T) & 7; var ycoord = 3.5 + depth * Math.sin(T); // cos - 8 -> sin boxIndex = xcoord | ycoord << 3; //     , //    if ('.' >= F[boxIndex]) break; b = xcoord; //  ?  ! } context.fillRect(x * 4, y * 4, b - xcoord ? 4 : depth / 2, depth / 2) y--; } x--; } } 


рд╡рд╛рдкрд╕ рдбреНрд░рд╛рдЗрдВрдЧ рдкрд░


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

 // ,  ,      // || // тЖУтЖУ context.fillRect(x * 4, y * 4, b - xcoord ? 4 : depth / 2, depth / 2); 

рдЪрд░ b рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдХреЛрдб рдореЗрдВ рдПрдХ рд╢рд░реНрдд рд╣реИ, рдФрд░ "рдмрдбрд╝реЗ рдХрд╛рд▓реЗ рдкрд┐рдХреНрд╕реЗрд▓" рдХреА рдЪреМрдбрд╝рд╛рдИ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рдирд╛: b - xcoord ? 4 : depth / 2 b - xcoord ? 4 : depth / 2 ред рдЖрдЗрдП рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдХреЛ рджреВрд░ рдХрд░реЗрдВ рдФрд░ рджреЗрдЦреЗрдВ рдХрд┐ рдЗрд╕рдХреЗ рдмрд┐рдирд╛ рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИ:

рдмреНрд▓реЙрдХ рдФрд░ рдЫрдд рдХреЗ рдмреАрдЪ рдХреЛрдИ рд╕реАрдорд╛ рдирд╣реАрдВ рд╣реИ! (рдХреНрд▓рд┐рдХ рдХрд░рдиреЗ рдпреЛрдЧреНрдп)

рд╕реНрдерд┐рддрд┐ b - xcoord рд╕рдордиреНрд╡рдп рдХреЛ рдмрджрд▓рдиреЗ рдкрд░ b - xcoord рд╣рдореЗрдВ рдПрдХ рдирд┐рд░рдВрддрд░ рдЪреМрдбрд╝рд╛рдИ рджреЗрдЧрд╛ред 0. рдФрд░ рдпрд╣ рдХрдм рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ? рдпрд╣ рдХреЗрд╡рд▓ рддрдм рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ рдЬрдм рд╣рдо рдХреЛрдб рдореЗрдВ (2) рд▓рд╛рдЗрди рдореЗрдВ рдирд╣реАрдВ рдЖрддреЗ рд╣реИрдВ:

 // .... var xcoord = t + depth * Math.cos(T) & 7; // <---    (1) // ... if ('.' >= F[boxIndex]) // <---    (3) break; b = xcoord; // <---     (2) // .... 

рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реИ рдХрд┐ рдХрд╛рд░реНрдпрдХреНрд░рдо рдЪрдХреНрд░ рд╕реЗ рдкрд╣рд▓реЗ (3) рд▓рд╛рдЗрди рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд▓рддрд╛ рд╣реИ, рдЬрдм рдмреАрдо рдЕрдкрдиреА рджреАрд╡рд╛рд░ рд╕реЗ рд▓рдЧрднрдЧ рд╕реАрдзрд╛ рджрд┐рд╢рд╛ рдореЗрдВ рдПрдХ рдЕрдкрд╛рд░рджрд░реНрд╢реА рдмреНрд▓реЙрдХ рдореЗрдВ рдЬрд╛рддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рдд рдпрд╣ рдмреНрд▓реЙрдХ рдХреЗ "рдЪреЗрд╣рд░реЗ" рдореЗрдВ рдЧрд┐рд░ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╕рднреА рдмреНрд▓реЙрдХ рдлрд░реНрд╢ рдФрд░ рдЫрдд рд╕реЗ рдЕрд▓рдЧ рд╣реИрдВред

рддреЛ, рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣ рд╕реБрдВрджрд░ 3 рдбреА рддрд╕реНрд╡реАрд░ рдХреИрд╕реЗ рдирд┐рдХрд▓рддреА рд╣реИ, рдЬреЛ рди рдХреЗрд╡рд▓ рдЖрдВрдЦ рдХреЛ рдкреНрд░рд╕рдиреНрди рдХрд░рддреА рд╣реИ, рдмрд▓реНрдХрд┐ рдпрд╣ рднреА рд╕реЛрдЪрддреА рд╣реИ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рдФрд░ рдХреНрдпреЛрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдЖрдк рдЗрд╕ рдХреЛрдб рдХреЛ рдпрд╣рд╛рдВ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдореЗрдВ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ (рдЗрд╕ рдЪрдорддреНрдХрд╛рд░ рдХреЗ рдбреЗрд╡рд▓рдкрд░ рдХреА рд╕рд╛рдЗрдЯред)

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


All Articles