{"id":314631,"date":"2020-12-10T15:00:20","date_gmt":"2020-12-10T15:00:20","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=314631"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=314631","title":{"rendered":"\u0412\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u041f\u0438, \u0422\u0430\u0443 \u0438 \u043f\u0440\u043e\u0441\u0442\u044b\u0445 \u0447\u0438\u0441\u0435\u043b"},"content":{"rendered":"\n<div class=\"post__text post__text-html post__text_v1\" id=\"post-content-body\">\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/rg\/ym\/36\/rgym36moidgkyvbcdnsn_twvu6i.jpeg\"><br \/>  <em><a href=\"https:\/\/www.flickr.com\/photos\/153311384@N03\/\" rel=\"nofollow\">\u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f<\/a><\/em><\/p>\n<p>  <\/p>\n<p>\u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u0432\u044b \u0432\u0438\u0434\u0435\u043b\u0438 <a href=\"https:\/\/opensourc.es\/blog\/visualizing-the-irrational-vote\" rel=\"nofollow\">\u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0439 \u043f\u043e\u0441\u0442<\/a>, \u0433\u0434\u0435 \u0431\u044b\u043b\u0438 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u044b \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043f\u0435\u0440\u0432\u044b\u0445 1000 \u0446\u0438\u0444\u0440 <math><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/c27\/0d4\/b16\/c270d4b16336541e5969ea219b5b6621.svg\" alt=\"$\\pi, \\tau$\" data-tex=\"inline\"><\/math> \u0438 <math><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/f38\/123\/f47\/f38123f47bec55f208d0b4d1c82a83c0.svg\" alt=\"$\\sqrt{2}$\" data-tex=\"inline\"><\/math>. \u041e\u043d \u0432\u043e\u0437\u043d\u0438\u043a \u0432 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0433\u043e \u0441\u043f\u043e\u0440\u0430 \u043e \u0442\u043e\u043c, \u043b\u0443\u0447\u0448\u0435 \u043b\u0438 <math><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/c36\/093\/55f\/c3609355f164a03db73ff187d34111ce.svg\" alt=\"$\\tau$\" data-tex=\"inline\"><\/math>, \u0447\u0435\u043c <math><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/7af\/18b\/081\/7af18b0819e3a7a12aadc52f24feb01f.svg\" alt=\"$\\pi$\" data-tex=\"inline\"><\/math>. \u041f\u043e \u044d\u0442\u043e\u043c\u0443 \u043f\u043e\u0432\u043e\u0434\u0443 \u0438\u0434\u0443\u0442 \u0431\u0435\u0441\u043a\u043e\u043d\u0435\u0447\u043d\u044b\u0435 \u0434\u0435\u0431\u0430\u0442\u044b, \u0438 \u044f \u043f\u043e\u0434\u0443\u043c\u0430\u043b, \u0447\u0442\u043e \u043c\u043e\u0433\u0443 \u043f\u043e\u0448\u0443\u0442\u0438\u0442\u044c \u043f\u043e \u044d\u0442\u043e\u043c\u0443 \u043f\u043e\u0432\u043e\u0434\u0443. \u0412 \u044d\u0442\u043e\u043c \u043f\u043e\u0441\u0442\u0435 \u044f \u0445\u043e\u0447\u0443 \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c, \u043a\u0430\u043a \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438, \u0438 \u043d\u0430\u0434\u0435\u044e\u0441\u044c, \u0447\u0442\u043e \u0432\u044b \u0437\u0430\u0445\u043e\u0442\u0438\u0442\u0435 \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c \u0443\u0434\u0438\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043f\u0430\u043a\u0435\u0442 <a href=\"https:\/\/habr.com\/ru\/post\/459842\/\">Luxor.jl<\/a> \u043f\u043e\u0441\u043b\u0435 \u043f\u0440\u043e\u0447\u0442\u0435\u043d\u0438\u044f. \u0412\u0447\u0435\u0440\u0430 \u044f \u043d\u0430\u0447\u0430\u043b \u0447\u0438\u0442\u0430\u0442\u044c \u0442\u0443\u0442\u043e\u0440\u0438\u0430\u043b, \u0438 \u044d\u0442\u043e \u043f\u043e\u0442\u0440\u044f\u0441\u0430\u044e\u0449\u0435! \u0412 \u043f\u0440\u043e\u0448\u043b\u044b\u0439 \u0440\u0430\u0437 \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0434\u0435\u043b\u0430\u043b\u0430\u0441\u044c \u043d\u0430 Javascript, \u0438 \u044f \u043f\u043e\u0434\u0443\u043c\u0430\u043b, \u0447\u0442\u043e \u044d\u0442\u043e\u0442 \u0430\u043a\u043a\u0443\u0440\u0430\u0442\u043d\u044b\u0439 \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u0438\u0439 \u043f\u0440\u043e\u0435\u043a\u0442 \u0441\u043e\u0439\u0434\u0435\u0442, \u0447\u0442\u043e\u0431\u044b \u043d\u0430\u0447\u0430\u0442\u044c \u0438\u0437\u0443\u0447\u0430\u0442\u044c \u041b\u0443\u043a\u0441\u043e\u0440. \u041a\u0430\u043a \u0443\u0436\u0435 \u0443\u043f\u043e\u043c\u0438\u043d\u0430\u043b\u043e\u0441\u044c \u0432 <a href=\"https:\/\/opensourc.es\/blog\/side-mentoring\" rel=\"nofollow\">let me be your mentor<\/a>: \u044f \u0434\u0443\u043c\u0430\u044e, \u0447\u0442\u043e \u043e\u0447\u0435\u043d\u044c \u0432\u0430\u0436\u043d\u043e \u0438\u043c\u0435\u0442\u044c \u0442\u0430\u043a\u0438\u0435 \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u0438\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u044b, \u0447\u0442\u043e\u0431\u044b \u043e\u0441\u0432\u043e\u0438\u0442\u044c \u043d\u043e\u0432\u044b\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442.<\/p>\n<p><a name=\"habracut\"><\/a>  <\/p>\n<h2 id=\"osnovnaya-ideya\">\u041e\u0441\u043d\u043e\u0432\u043d\u0430\u044f \u0438\u0434\u0435\u044f<\/h2>\n<p>  <\/p>\n<p>\u042f \u0445\u043e\u0442\u0435\u043b \u0432\u043e\u0441\u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u0432\u0438\u0434\u0435\u043b \u0432 <a href=\"https:\/\/www.youtube.com\/watch?v=NPoj8lk9Fo4\" rel=\"nofollow\">Numberphile<\/a> \u043e\u0442 \u041c\u0430\u0440\u0442\u0438\u043d\u0430 \u041a\u0440\u0436\u0438\u0432\u0438\u043d\u0441\u043a\u043e\u0433\u043e.<\/p>\n<p>  <\/p>\n<p>\u0422\u0430\u043c \u0431\u044b\u043b \u043a\u0440\u0443\u0433 (\u043a\u043e\u0442\u043e\u0440\u044b\u0439, \u0432\u043f\u043e\u043b\u043d\u0435 \u0430\u0441\u0441\u043e\u0446\u0438\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0438 \u0441 <math><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/7af\/18b\/081\/7af18b0819e3a7a12aadc52f24feb01f.svg\" alt=\"$\\pi$\" data-tex=\"inline\"><\/math> \u0438 \u0441 <math><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/c36\/093\/55f\/c3609355f164a03db73ff187d34111ce.svg\" alt=\"$\\tau$\" data-tex=\"inline\"><\/math>) \u0440\u0430\u0437\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0439 \u043d\u0430 10 \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u043e\u0432, \u043f\u043e \u043e\u0434\u043d\u043e\u043c\u0443 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0439 \u0446\u0438\u0444\u0440\u044b. \u0426\u0438\u0444\u0440\u044b \u043d\u0430\u0448\u0435\u0433\u043e \u0438\u0440\u0440\u0430\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0447\u0438\u0441\u043b\u0430 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u043a\u0440\u0438\u0432\u044b\u043c\u0438 \u0432\u043d\u0443\u0442\u0440\u0438 \u044d\u0442\u043e\u0433\u043e \u043a\u0440\u0443\u0433\u0430, \u0442\u0430\u043a \u0447\u0442\u043e 3.1415 (\u044f \u043d\u0430\u0447\u0438\u043d\u0430\u044e \u0441 14) \u2014 \u044d\u0442\u043e \u043a\u0440\u0438\u0432\u0430\u044f \u043e\u0442 \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0430 1 \u0434\u043e \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0430 4, \u0430 \u0437\u0430\u0442\u0435\u043c \u043e\u0431\u0440\u0430\u0442\u043d\u043e \u043a 1, \u043f\u043e\u0442\u043e\u043c \u0434\u043e 5 \u0438 \u0442\u0430\u043a \u0434\u0430\u043b\u0435\u0435. \u041a\u0430\u0436\u0434\u044b\u0439 \u0440\u0430\u0437 \u043c\u044b \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0430\u0435\u043c\u0441\u044f \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043f\u043e \u0447\u0430\u0441\u043e\u0432\u043e\u0439 \u0441\u0442\u0440\u0435\u043b\u043a\u0435 \u0432 \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0435 \u0442\u0430\u043a, \u0447\u0442\u043e 1\u21924 \u0441\u043e\u0437\u0434\u0430\u0435\u0442 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0435 \u043a\u0440\u0438\u0432\u044b\u0435 (\u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0442\u0435\u043a\u0443\u0449\u0435\u0433\u043e \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u044f, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043c\u044b \u043d\u0430\u0445\u043e\u0434\u0438\u043c\u0441\u044f).<\/p>\n<p>  <\/p>\n<p>\u041f\u043e\u0442\u043e\u043c \u043d\u0430\u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0432\u0441\u044f\u043a\u0438\u0435 \u0444\u0438\u0447\u0438. \u041c\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u043d\u0430\u0447\u0430\u0442\u044c \u0447\u0443\u0432\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0441\u0435\u0431\u044f \u043a\u043e\u043c\u0444\u043e\u0440\u0442\u043d\u043e \u0441 \u041b\u0443\u043a\u0441\u043e\u0440\u043e\u043c. \u0412\u0430\u0436\u043d\u043e: \u043d\u0435 \u043d\u0430\u0434\u043e \u0438\u0441\u043a\u0430\u0442\u044c \u043c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0443\u044e \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0446\u0438\u044e \u2014 \u044d\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u043f\u0440\u043e\u0435\u043a\u0442 \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \ud83d\ude09<\/p>\n<p>  <\/p>\n<p>\u042f \u0437\u043d\u0430\u044e, \u0432\u0430\u043c \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e, \u043a\u0430\u043a \u0434\u043e\u043b\u0436\u0435\u043d \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u043a\u043e\u043d\u0435\u0447\u043d\u044b\u0439 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442:<\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/zr\/8m\/sm\/zr8msm-z9eqdczyztb2im-n1aey.png\"><\/p>\n<p>  <\/p>\n<h2 id=\"nachinaem\">\u041d\u0430\u0447\u0438\u043d\u0430\u0435\u043c<\/h2>\n<p>  <\/p>\n<pre><code class=\"julia\">using Luxor  function vis()     @png begin         sethue(&quot;black&quot;)         circle(O, 50, :stroke)         setdash(&quot;dot&quot;)         circle(O, 70, :stroke)         sethue(&quot;darkblue&quot;)         circle(O, 10, :fill)      end 500 200 &quot;.\/start.png&quot; end<\/code><\/pre>\n<p>  <\/p>\n<p>\u0432\u044b\u0437\u044b\u0432\u0430\u0435\u043c <code>vis()<\/code> \u0438 \u0441\u043e\u0437\u0434\u0430\u0435\u043c \u0444\u0430\u0439\u043b <code>start.png<\/code> \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u043a\u0430\u043a-\u0442\u043e \u0442\u0430\u043a:<\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/dv\/hg\/z9\/dvhgz9gxovk4tro9hrmmf90gvyw.png\"><\/p>\n<p>  <\/p>\n<p>\u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0431\u044b\u0441\u0442\u0440\u0435\u043d\u044c\u043a\u043e \u043f\u0440\u043e\u0439\u0434\u0435\u043c\u0441\u044f \u043f\u043e \u043a\u043e\u043c\u0430\u043d\u0434\u0430\u043c:<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">@png begin end width height &quot;filename.png&quot;<\/code><\/pre>\n<p>  <\/p>\n<p>\u043f\u0440\u043e\u0441\u0442\u043e \u0445\u043e\u0440\u043e\u0448\u0438\u0439 \u043c\u0430\u043a\u0440\u043e\u0441. \ud83d\ude42<\/p>\n<p>  <\/p>\n<p><code>sethue<\/code> \u0437\u0430\u0434\u0430\u0435\u0442 \u0446\u0432\u0435\u0442 \u0438 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u043b\u0438\u0431\u043e \u0441\u0442\u0440\u043e\u043a\u0443, \u043a\u0430\u043a \u043f\u043e\u043a\u0430\u0437\u0430\u043d\u043e \u0432\u044b\u0448\u0435 \u0438\u043b\u0438 \u0446\u0432\u0435\u0442 \u043f\u0430\u043a\u0435\u0442\u0430 \u0438\u0437 <code>Colors<\/code>. \u041e\u043d \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u0446\u0432\u0435\u0442 \u0434\u043b\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 \u043a\u043e\u043c\u0430\u043d\u0434 \u0440\u0438\u0441\u043e\u0432\u0430\u043d\u0438\u044f \u0434\u043e \u0442\u0435\u0445 \u043f\u043e\u0440, \u043f\u043e\u043a\u0430 \u0432\u044b \u043d\u0435 \u0432\u044b\u0431\u0435\u0440\u0435\u0442\u0435 \u0434\u0440\u0443\u0433\u043e\u0439. \u0422\u043e \u0436\u0435 \u0441\u0430\u043c\u043e\u0435 \u0432\u0435\u0440\u043d\u043e \u0438 \u043f\u0440\u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0435 \u0448\u0438\u0440\u0438\u043d\u044b \u043b\u0438\u043d\u0438\u0438 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e <code>setline<\/code>, \u0438\u043b\u0438 \u043f\u0440\u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0435 \u0440\u0430\u0437\u043c\u0435\u0440\u0430 \u0448\u0440\u0438\u0444\u0442\u0430, \u0438\u043b\u0438 \u043f\u0440\u0438 \u0434\u0440\u0443\u0433\u0438\u0445 \u043e\u0431\u0449\u0438\u0445 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u0445.<\/p>\n<p>  <\/p>\n<p>\u041a\u043e\u043c\u0430\u043d\u0434\u044b \u0440\u0438\u0441\u043e\u0432\u0430\u043d\u0438\u044f, \u0442\u0430\u043a\u0438\u0435 \u043a\u0430\u043a <code>circle<\/code>, \u043e\u0431\u044b\u0447\u043d\u043e \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u044e\u0442 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0438 \u0437\u0430\u043a\u0430\u043d\u0447\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u043c \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f, \u0442\u0430\u043a\u0438\u043c \u043a\u0430\u043a <code>:stroke<\/code> \u0438\u043b\u0438 <code>:fill<\/code>.<\/p>\n<p>  <\/p>\n<p><code>\u041e<\/code> \u2014 \u044d\u0442\u043e \u0431\u0443\u043a\u0432\u0430 &quot;\u041e&quot;, \u0430 \u043d\u0435 \u0447\u0438\u0441\u043b\u043e &quot;0&quot;. \ud83d\ude42 \u041e\u043d\u0430 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0441\u043e\u0431\u043e\u0439 \u043d\u0430\u0447\u0430\u043b\u043e \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442 \u0438 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043a\u0440\u0430\u0442\u043a\u043e\u0439 \u0444\u043e\u0440\u043c\u043e\u0439 \u0434\u043b\u044f <code>Point(0, 0)<\/code>. \u0412 \u041b\u0443\u043a\u0441\u043e\u0440\u0435 \u043d\u0430\u0447\u0430\u043b\u043e \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \u0446\u0435\u043d\u0442\u0440\u0435 \u043f\u043e\u043b\u043e\u0442\u043d\u0430. \u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0432\u0442\u043e\u0440\u043e\u0433\u043e \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430 \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u0437\u0430\u0434\u0430\u043d \u0440\u0430\u0434\u0438\u0443\u0441.<\/p>\n<p>  <\/p>\n<p>\u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u043d\u0430\u0440\u0438\u0441\u0443\u0435\u043c \u0432\u043d\u0435\u0448\u043d\u0438\u0439 \u043a\u0440\u0443\u0433 \u0438 \u0434\u043e\u0431\u0430\u0432\u0438\u043c \u0446\u0438\u0444\u0440\u044b:<\/p>\n<p>  <\/p>\n<pre><code class=\"julia\">radius = 100 @png begin     background(&quot;black&quot;)      sethue(&quot;white&quot;)     circle(O, radius, :stroke)      for i in 0:9         \u03b8 = 2\u03c0*0.1*i+0.1*\u03c0         mid = Point(             radius*sin(\u03b8),             -radius*cos(\u03b8),         )         label(string(i), :N, mid)     end  end 700 300 &quot;.\/first_step.png&quot;<\/code><\/pre>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/ee\/cy\/md\/eecymdkqc1nrfd_esg2azdciq4g.png\"><\/p>\n<p>  <\/p>\n<p>\u041f\u0435\u0440\u0432\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u0434\u043e\u043b\u0436\u043d\u0430 \u0431\u044b\u0442\u044c \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u043e\u0439. <\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">\u03b8 = 2\u03c0*0.1*i+0.1*\u03c0<\/code><\/pre>\n<p>  <\/p>\n<p>\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u044d\u0442\u043e \u043d\u0435 \u0438\u0434\u0435\u0430\u043b\u044c\u043d\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043e (\u043a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u044f \u043c\u043e\u0433 \u0431\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c <math><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/c36\/093\/55f\/c3609355f164a03db73ff187d34111ce.svg\" alt=\"$\\tau$\" data-tex=\"inline\"><\/math> :D). <code>2\u03c0*0.1*i<\/code> \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442 \u0441 \u0441\u0435\u0432\u0435\u0440\u043d\u043e\u0433\u043e \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u044f, \u0430 \u0437\u0430\u0442\u0435\u043c \u0434\u043b\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0433\u043e <code>i<\/code> \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0435\u043d\u0438\u0435 \u043d\u0430 <math><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/f41\/ed4\/4e9\/f41ed44e9f868344e90c92fac73ba814.svg\" alt=\"$36^\\circ$\" data-tex=\"inline\"><\/math>. \u042f \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u044e &quot;0.1 \u03c0&quot;, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0445\u043e\u0447\u0443 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u0442\u044c \u043a \u0441\u0435\u0440\u0435\u0434\u0438\u043d\u0435 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0430. \u041c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c, \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c <code>0.5\/10*2\u03c0<\/code>. \u0417\u0430\u0442\u0435\u043c \u043c\u044b \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u043e\u0432\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u0435\u043c \u043d\u0430\u0448 \u0445\u043e\u043b\u0441\u0442 \u0438 \u0434\u0432\u0438\u0433\u0430\u044f\u0441\u044c \u0447\u0443\u0442\u044c \u0432\u044b\u0448\u0435 \u0440\u0430\u0434\u0438\u0443\u0441\u0430, \u0440\u0438\u0441\u0443\u0435\u043c \u043c\u0435\u0442\u043a\u0438. \u041d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u0442\u0430\u043a\u043e\u0435 \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0434\u0435\u043b\u0430\u0442\u044c \u0432 <code>Luxor<\/code>, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f <code>rotate<\/code> \u0438 <code>translate<\/code>. \u041d\u043e \u044f \u0440\u0435\u0448\u0438\u043b \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0432\u0440\u0443\u0447\u043d\u0443\u044e, \u0442\u0430\u043a \u043a\u0430\u043a \u043c\u043d\u0435 \u0432\u0441\u0435 \u0440\u0430\u0432\u043d\u043e \u044d\u0442\u043e \u043f\u0440\u0438\u0433\u043e\u0434\u0438\u0442\u0441\u044f \u043f\u043e\u0437\u0436\u0435. \u0412 \u043e\u0431\u0449\u0435\u043c \u0444\u043e\u0440\u043c\u0443\u043b\u0430 \u0442\u0430\u043a\u043e\u0432\u0430:<\/p>\n<p>  <\/p>\n<p><math><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/c3c\/bae\/b47\/c3cbaeb47799d1aade6e156eaf74501e.svg\" alt=\"$ \\begin{aligned} x' &amp;= x \\cos (\\theta) - y \\sin(\\theta) \\\\ y' &amp;= x \\sin (\\theta) + y \\cos(\\theta) \\\\ \\end{aligned} $\" data-tex=\"display\"><\/math><\/p>\n<p>  <\/p>\n<p>\u0422\u0430\u043a\u043e\u0435 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u043e\u0432\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u0435\u0442 \u043f\u043b\u043e\u0441\u043a\u043e\u0441\u0442\u044c \u043d\u0430 <math><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/ff2\/c64\/99d\/ff2c6499d038a61a41d7ce75cd78788f.svg\" alt=\"$\\theta$\" data-tex=\"inline\"><\/math> \u0438 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442 \u0442\u0440\u0430\u043d\u0441\u043b\u044f\u0446\u0438\u044e \u043d\u0430 <code>x,y<\/code>. \u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u044f \u043f\u0435\u0440\u0435\u0432\u043e\u0436\u0443 \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430 <code>y<\/code>, \u043c\u043d\u0435 \u043d\u0435 \u043d\u0443\u0436\u043d\u043e \u043f\u0435\u0440\u0432\u043e\u0435 \u0442\u043e\u0436\u0434\u0435\u0441\u0442\u0432\u043e. \u041f\u043e\u043c\u043d\u0438\u0442\u0435, \u0447\u0442\u043e <code>y<\/code> \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044f, \u043a\u043e\u0433\u0434\u0430 \u0438\u0434\u0435\u0442 \u0432\u043d\u0438\u0437.<\/p>\n<p>  <\/p>\n<p>\u0412 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0435\u0435 \u0432\u0440\u0435\u043c\u044f \u0435\u0441\u0442\u044c \u0434\u0432\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b:<\/p>\n<p>  <\/p>\n<ul>\n<li>\u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u043d\u0430\u043c \u043d\u0435 \u043d\u0443\u0436\u0435\u043d \u043a\u0440\u0443\u0433, \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u044b \u0434\u0443\u0433\u0438 (\u0441\u0435\u0433\u043c\u0435\u043d\u0442\u044b) \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0439 \u0446\u0438\u0444\u0440\u044b<\/li>\n<li>\u043f\u043e\u0434\u043f\u0438\u0441\u0438 \u043d\u0435 \u0447\u0438\u0442\u0430\u044e\u0442\u0441\u044f<\/li>\n<\/ul>\n<p>  <\/p>\n<p>\u041a\u043e\u043c\u0430\u043d\u0434\u0430 label \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u0442\u0440\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f: \u0442\u0435\u043a\u0441\u0442, \u0432\u0440\u0430\u0449\u0435\u043d\u0438\u0435 \u0438 \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435, \u0433\u0434\u0435 \u0432\u0440\u0430\u0449\u0435\u043d\u0438\u0435 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0437\u0430\u043f\u0438\u0441\u0430\u043d\u043e \u043a\u0430\u043a <code>:N,: E,: S,: W<\/code> \u0434\u043b\u044f \u0441\u0435\u0432\u0435\u0440\u0430, \u0432\u043e\u0441\u0442\u043e\u043a\u0430, \u044e\u0433\u0430, \u0437\u0430\u043f\u0430\u0434\u0430 \u0438\u043b\u0438 \u043a\u0430\u043a \u0443\u0433\u043e\u043b (\u0432 \u0440\u0430\u0434\u0438\u0430\u043d\u0430\u0445). <code>:N<\/code> \u0435\u0441\u0442\u044c <math><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/b61\/721\/a68\/b61721a68659a37ee6cb35173aded53d.svg\" alt=\"$-\\frac{\\pi}{2}$\" data-tex=\"inline\"><\/math>. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043c\u044b \u0445\u043e\u0442\u0438\u043c \u043d\u0430\u0447\u0430\u0442\u044c \u0441 <math><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/b61\/721\/a68\/b61721a68659a37ee6cb35173aded53d.svg\" alt=\"$ - \\frac{\\pi}{2}$\" data-tex=\"inline\"><\/math>, \u0430 \u043f\u043e\u0442\u043e\u043c \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c \u0442\u0435\u043a\u0443\u0449\u0438\u0439 \u0443\u0433\u043e\u043b \u043f\u043e\u0432\u043e\u0440\u043e\u0442\u0430. \u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u0435 \u0431\u044b\u043b\u043e \u0431\u044b \u0437\u0434\u043e\u0440\u043e\u0432\u043e, \u0435\u0441\u043b\u0438 \u0431\u044b \u043e\u043d\u043e \u043d\u0435 \u0434\u043e\u0441\u0442\u0430\u0432\u0430\u043b\u043e \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0434\u043e \u043e\u043a\u0440\u0443\u0436\u043d\u043e\u0441\u0442\u0438 \u0438\u043b\u0438 \u043d\u0435 \u043f\u043e\u0434\u0445\u043e\u0434\u0438\u043b\u043e \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u0431\u043b\u0438\u0437\u043a\u043e \u043a \u043d\u0435\u0439. \u0417\u0434\u0435\u0441\u044c \u043c\u044b \u043c\u043e\u0433\u043b\u0438 \u0431\u044b \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0442\u044c \u0440\u0430\u0434\u0438\u0443\u0441 \u0438\u043b\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c <code>;offset<\/code> \u0432 \u043a\u043e\u043c\u0430\u043d\u0434\u0435 <code>label<\/code>.<\/p>\n<p>  <\/p>\n<p>\u0414\u043b\u044f \u043f\u0435\u0440\u0432\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0438 \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u044f <code>arc2r<\/code>, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u0442\u0440\u0438 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u0430<br \/>  <code>c1, p1, p2<\/code> + \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435: <code>c1<\/code> \u2014 \u044d\u0442\u043e \u0446\u0435\u043d\u0442\u0440 \u043e\u043a\u0440\u0443\u0436\u043d\u043e\u0441\u0442\u0438, \u0430 <code>p1<\/code> \u0438 <code>p2<\/code> \u2014 \u0442\u043e\u0447\u043a\u0438 \u043d\u0430 \u043e\u043a\u0440\u0443\u0436\u043d\u043e\u0441\u0442\u0438, \u043c\u0435\u0436\u0434\u0443 \u043a\u043e\u0442\u043e\u0440\u044b\u043c\u0438 \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u043f\u043e\u043a\u0430\u0437\u0430\u043d \u0441\u0435\u0433\u043c\u0435\u043d\u0442. \u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0432\u044b\u0431\u0440\u0430\u043d\u043e \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043f\u043e \u0447\u0430\u0441\u043e\u0432\u043e\u0439 \u0441\u0442\u0440\u0435\u043b\u043a\u0435.<\/p>\n<p>  <\/p>\n<p>\u041c\u044b \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0443\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u044e, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c <math><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/ff2\/c64\/99d\/ff2c6499d038a61a41d7ce75cd78788f.svg\" alt=\"$\\theta$\" data-tex=\"inline\"><\/math> \u0438 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0443\u044e \u0442\u043e\u0447\u043a\u0443 \u0431\u043e\u043b\u0435\u0435 \u043f\u0440\u043e\u0441\u0442\u044b\u043c \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u043c:<\/p>\n<p>  <\/p>\n<pre><code class=\"julia\">function get_coord(val, radius)     \u03b8 = 2\u03c0*0.1*val     return Point(         radius*sin(\u03b8),         -radius*cos(\u03b8),     ) end<\/code><\/pre>\n<p>  <\/p>\n<p>\u0430 \u043f\u043e\u0442\u043e\u043c:<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">background(&quot;black&quot;)  for i in 0:9     from = get_coord(i, radius)     to = get_coord(i+1, radius)     randomhue()      \u03b8 = 2\u03c0*0.1*i+0.1*\u03c0     mid = Point(         radius*sin(\u03b8),         -radius*cos(\u03b8),     )     label(string(i), -\u03c0\/2+\u03b8, mid; offset=15)     move(from)     arc2r(O, from, to, :stroke) end<\/code><\/pre>\n<p>  <\/p>\n<p>\u042f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b <code>randomhue<\/code>, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0439 \u0446\u0432\u0435\u0442. \u041c\u044b \u0438\u0441\u043f\u0440\u0430\u0432\u0438\u043c \u044d\u0442\u043e \u0432 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0440\u0430\u0437 \ud83d\ude42<br \/>  \u0422\u0430\u043a\u0436\u0435 \u044f \u043f\u0435\u0440\u0435\u0441\u0442\u0430\u0432\u043b\u044f\u043b \u043f\u043e\u0440\u044f\u0434\u043e\u043a <code>Label<\/code> \u0438 <code>arc2r<\/code> \u0438 \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u043b <code>move<\/code>, \u0442\u0430\u043a \u043a\u0430\u043a \u0432 \u043f\u0440\u043e\u0442\u0438\u0432\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043b\u0438\u043d\u0438\u0438 \u0440\u0438\u0441\u0443\u044e\u0442\u0441\u044f \u043e\u0442 \u043c\u0435\u0442\u043a\u0438 \u0434\u0443\u0433\u0438. \u042d\u0442\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u043f\u043e\u0442\u043e\u043c\u0443, \u0447\u0442\u043e <code>arc<\/code> \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0435\u0442 \u0442\u0435\u043a\u0443\u0449\u0438\u0439 \u043f\u0443\u0442\u044c.<\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/l7\/4t\/x_\/l74tx_rjukqc5s0qhuijw6jvxma.png\"><\/p>\n<p>  <\/p>\n<p>\u0412\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u043d\u0430\u043c\u043d\u043e\u0433\u043e \u043b\u0443\u0447\u0448\u0435! \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0432\u043e\u0437\u044c\u043c\u0435\u043c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0445\u043e\u0440\u043e\u0448\u0438\u0445 \u0446\u0432\u0435\u0442\u043e\u0432 \u0438\u0437 <a href=\"https:\/\/juliagraphics.github.io\/ColorSchemes.jl\/stable\/\" rel=\"nofollow\">Colorschemes.jl<\/a>.<\/p>\n<p>  <\/p>\n<p>\u042f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b \u0441\u0445\u0435\u043c\u0443 <code>rainbow<\/code>, \u043d\u0430\u0447\u0438\u043d\u0430\u044f \u0441 7-\u0433\u043e \u0446\u0432\u0435\u0442\u0430 :D. \u0412\u044b, \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u0437\u0430\u0445\u043e\u0442\u0438\u0442\u0435 \u0438\u0441\u043f\u044b\u0442\u0430\u0442\u044c \u0434\u0440\u0443\u0433\u0438\u0435 \u0446\u0432\u0435\u0442\u043e\u0432\u044b\u0435 \u0441\u0445\u0435\u043c\u044b, \u0442\u0430\u043a \u043a\u0430\u043a \u0437\u0434\u0435\u0441\u044c \u0446\u0432\u0435\u0442\u0430 \u043d\u0435 \u0442\u0430\u043a \u043b\u0435\u0433\u043a\u043e \u0440\u0430\u0437\u043b\u0438\u0447\u0438\u0442\u044c, \u043d\u043e \u043c\u043d\u0435 \u0432\u0441\u0435 \u0440\u0430\u0432\u043d\u043e \u043f\u043e\u0447\u0435\u043c\u0443-\u0442\u043e \u043d\u0440\u0430\u0432\u0438\u0442\u0441\u044f \u0438\u043c\u0435\u043d\u043d\u043e \u043e\u043d\u0430.<\/p>\n<p>  <\/p>\n<pre><code class=\"julia\">using ColorSchemes colors = ColorSchemes.rainbow[7:end]<\/code><\/pre>\n<p>  <\/p>\n<p>\u0438 \u0437\u0430\u0442\u0435\u043c<\/p>\n<p>  <\/p>\n<pre><code class=\"julia\">sethue(colors[i+1])<\/code><\/pre>\n<p>  <\/p>\n<p>\u043f\u043e\u043c\u043d\u0438\u0442\u0435, \u0447\u0442\u043e \u0438\u043d\u0434\u0435\u043a\u0441\u0430\u0446\u0438\u044f \u043c\u0430\u0441\u0441\u0438\u0432\u043e\u0432 \u0432 Julia \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442\u0441\u044f \u0441 \u0435\u0434\u0438\u043d\u0438\u0446\u044b.<\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/xe\/t_\/e8\/xet_e8nxksv6yvtiocdsacyei9c.png\"><\/p>\n<p>  <\/p>\n<p>\u041a\u0430\u043a\u043e\u0432\u044b \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0448\u0430\u0433\u0438?<\/p>\n<p>  <\/p>\n<ul>\n<li>\u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0441\u0442\u0440\u043e\u043a<\/li>\n<li>\u0420\u0435\u0444\u0430\u043a\u0442\u043e\u0440\u0438\u043d\u0433 \u043a\u043e\u0434\u0430<\/li>\n<li>\u041e\u0436\u0438\u0432\u043b\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430<\/li>\n<li>\u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0442\u043e\u0447\u0435\u043a<\/li>\n<li>\u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0433\u0438\u0441\u0442\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u0441\u0432\u0435\u0440\u0445\u0443<\/li>\n<\/ul>\n<p>  <\/p>\n<p>\u042f \u0434\u0443\u043c\u0430\u044e, \u0447\u0442\u043e \u0432\u0438\u0437\u0443\u0430\u043b\u044c\u043d\u043e \u043f\u0440\u0438\u0432\u043b\u0435\u043a\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0438\u043c\u0435\u0442\u044c \u043a\u0440\u0443\u0433 \u043f\u043e\u0441\u0435\u0440\u0435\u0434\u0438\u043d\u0435, \u0433\u0434\u0435 \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0441\u0438\u043c\u0432\u043e\u043b <math><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/7af\/18b\/081\/7af18b0819e3a7a12aadc52f24feb01f.svg\" alt=\"$\\pi$\" data-tex=\"inline\"><\/math> (\u0438\u043b\u0438 <math><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/c36\/093\/55f\/c3609355f164a03db73ff187d34111ce.svg\" alt=\"$\\tau$\" data-tex=\"inline\"><\/math>) \u043f\u043e\u0437\u0436\u0435.<br \/>  \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043c\u044b \u043d\u0435 \u043c\u043e\u0436\u0435\u043c \u043f\u0440\u043e\u0432\u0435\u0441\u0442\u0438 \u043f\u0440\u044f\u043c\u044b\u0435 \u043b\u0438\u043d\u0438\u0438 \u043e\u0442 \u043e\u0434\u043d\u043e\u0433\u043e \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0430 \u043a \u0434\u0440\u0443\u0433\u043e\u043c\u0443. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e \u043a\u0432\u0430\u0434\u0440\u0430\u0442\u0438\u0447\u043d\u044b\u0435 \u043a\u0440\u0438\u0432\u044b\u0435 <a href=\"https:\/\/opensourc.es\/blog\/bezier-curve\" rel=\"nofollow\">\u0411\u0435\u0437\u044c\u0435<\/a>.<\/p>\n<p>  <\/p>\n<p>\u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u043f\u043e\u043b\u0443\u0447\u0438\u043c \u0446\u0438\u0444\u0440\u044b \u0447\u0438\u0441\u043b\u0430 \u041f\u0438:<\/p>\n<p>  <\/p>\n<pre><code class=\"julia\">max_digits = 10 digits = setprecision(BigFloat, Int(ceil(log2(10) * max_digits+10))) do     return parse.(Int, collect(string(BigFloat(pi))[3:max_digits+2])) end<\/code><\/pre>\n<p>  <\/p>\n<p>\u044d\u0442\u043e \u0434\u0430\u0435\u0442 \u043d\u0430\u043c \u043f\u0435\u0440\u0432\u044b\u0435 10 \u0446\u0438\u0444\u0440 \u043f\u043e\u0441\u043b\u0435 \u0434\u0435\u0441\u044f\u0442\u0438\u0447\u043d\u043e\u0439 \u0442\u043e\u0447\u043a\u0438 \u0447\u0438\u0441\u043b\u0430 \u041f\u0438. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043c\u043d\u0435 \u043d\u0443\u0436\u043d\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0442\u043e\u0447\u043d\u043e\u0441\u0442\u044c <code>BigFloat<\/code>. \u0414\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e, \u0447\u0442\u043e \u043f\u0438 \u043d\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0436\u0435\u0441\u0442\u043a\u043e \u0437\u0430\u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0439 \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u043e\u0439 \u0432 \u0414\u0436\u0443\u043b\u0438\u0438. \u041e\u043d\u043e \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u043e \u0442\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u0447\u0442\u043e \u044f \u0432 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0435 \u043c\u043e\u0433\u0443 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043b\u044e\u0431\u0443\u044e \u0442\u043e\u0447\u043d\u043e\u0441\u0442\u044c, \u043a\u0430\u043a\u0443\u044e \u0437\u0430\u0445\u043e\u0447\u0443. \u0422\u043e\u0447\u043d\u043e\u0441\u0442\u044c \u0434\u043e\u043b\u0436\u043d\u0430 \u0431\u044b\u0442\u044c \u0437\u0430\u0434\u0430\u043d\u0430 \u0432 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0435 \u0431\u0438\u0442\u043e\u0432, \u0442\u0430\u043a \u0447\u0442\u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0435 \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0435. \u042f \u0434\u043e\u0431\u0430\u0432\u0438\u043b +10 \u0432 \u043a\u043e\u043d\u0446\u0435, \u0447\u0442\u043e\u0431\u044b \u0431\u044b\u0442\u044c \u0443\u0432\u0435\u0440\u0435\u043d\u043d\u044b\u043c \ud83d\ude00<\/p>\n<p>  <\/p>\n<p>\u0427\u0442\u043e\u0431\u044b \u043d\u0430\u0440\u0438\u0441\u043e\u0432\u0430\u0442\u044c \u043a\u0432\u0430\u0434\u0440\u0430\u0442\u0438\u0447\u043d\u0443\u044e \u043a\u0440\u0438\u0432\u0443\u044e \u0411\u0435\u0437\u044c\u0435, \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u044b \u0442\u0440\u0438 \u0442\u043e\u0447\u043a\u0438. \u041d\u0430\u0447\u0430\u043b\u043e, \u043a\u043e\u043d\u0435\u0446 \u0438 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044c\u043d\u0430\u044f \u0442\u043e\u0447\u043a\u0430. \u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044c\u043d\u043e\u0439 \u0442\u043e\u0447\u043a\u0438 \u044f \u0432\u044b\u0431\u0438\u0440\u0430\u044e \u0442\u043e\u0447\u043a\u0443 \u043d\u0430 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0435\u043c \u043a\u0440\u0443\u0433\u0435, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0440\u043e\u0441\u0442\u043e \u0442\u0430\u043a\u0436\u0435 \u0440\u0430\u0437\u0434\u0435\u043b\u0435\u043d \u043d\u0430 \u0434\u0435\u0441\u044f\u0442\u044c \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u043e\u0432, \u0438 \u0432\u044b\u0431\u0438\u0440\u0430\u044e \u0441\u0435\u0433\u043c\u0435\u043d\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043f\u043e\u0441\u0435\u0440\u0435\u0434\u0438\u043d\u0435 \u043c\u0435\u0436\u0434\u0443 \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u0446\u0438\u0444\u0440\u043e\u0439 <code>from_val<\/code> \u0438 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u0446\u0438\u0444\u0440\u043e\u0439 <code>to_val<\/code>.<\/p>\n<p>  <\/p>\n<p>\u042f \u0434\u043e\u043b\u0436\u0435\u043d \u0443\u0442\u043e\u0447\u043d\u0438\u0442\u044c, \u0447\u0442\u043e \u044f \u0438\u043c\u0435\u044e \u0432 \u0432\u0438\u0434\u0443 \u043f\u043e\u0434 \u0441\u0435\u0440\u0435\u0434\u0438\u043d\u043e\u0439: \u0441\u0440\u0435\u0434\u043d\u044f\u044f \u0442\u043e\u0447\u043a\u0430 \u043c\u0435\u0436\u0434\u0443 0 \u0438 4 \u0434\u043e\u043b\u0436\u043d\u0430 \u0431\u044b\u0442\u044c 2, \u043d\u043e \u043c\u0435\u0436\u0434\u0443 8 \u0438 0 \u043e\u043d\u0430 \u0434\u043e\u043b\u0436\u043d\u0430 \u0431\u044b\u0442\u044c 9. \u041e\u043d\u0430 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442\u0441\u044f \u043a\u0440\u0430\u0442\u0447\u0430\u0439\u0448\u0438\u043c \u043f\u0443\u0442\u0435\u043c \u043e\u0442 \u043e\u0434\u043d\u043e\u0433\u043e \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0430 \u043a \u0434\u0440\u0443\u0433\u043e\u043c\u0443, \u0430 \u043f\u043e\u0442\u043e\u043c \u0431\u0435\u0440\u0435\u0442\u0441\u044f \u0441\u0435\u0440\u0435\u0434\u0438\u043d\u0430.<\/p>\n<p>  <\/p>\n<p>\u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u0443 \u043c\u0435\u043d\u044f \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u043d\u0435\u0442 10 \u0434\u0438\u0441\u043a\u0440\u0435\u0442\u043d\u044b\u0445 \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u043e\u0432, \u044d\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u0434\u043b\u044f \u043f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u044f. \u042f \u043c\u043e\u0433\u0443 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u0440\u0435\u0434\u043d\u044e\u044e \u0442\u043e\u0447\u043a\u0443 1,23 \u0438\u043b\u0438 \u0447\u0442\u043e-\u0442\u043e \u0432 \u044d\u0442\u043e\u043c \u0440\u043e\u0434\u0435. \u042d\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043c\u044b \u043c\u0435\u043d\u044f\u0435\u043c \u043d\u0430\u0448\u0443 \u043d\u0430\u0447\u0430\u043b\u044c\u043d\u0443\u044e \u0438 \u043a\u043e\u043d\u0435\u0447\u043d\u0443\u044e \u043f\u043e\u0437\u0438\u0446\u0438\u0438 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u043f\u043e\u0437\u0438\u0446\u0438\u0438, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043c\u044b \u043d\u0430\u0445\u043e\u0434\u0438\u043c\u0441\u044f \u0432 \u043d\u0430\u0448\u0435\u043c \u043c\u0430\u0441\u0441\u0438\u0432\u0435 \u0446\u0438\u0444\u0440.<\/p>\n<p>  <\/p>\n<p>\u042f \u043d\u0430\u0434\u0435\u044e\u0441\u044c, \u0447\u0442\u043e \u0432\u0441\u0435 \u0441\u0442\u0430\u043d\u0435\u0442 \u044f\u0441\u043d\u0435\u0435, \u0435\u043b\u0438 \u0432\u0437\u0433\u043b\u044f\u043d\u0443\u0442\u044c \u043d\u0430 \u043a\u043e\u0434:<\/p>\n<p>  <\/p>\n<pre><code class=\"julia\">small_radius = 70 for i in 1:max_digits-1     from_val = digits[i]     to_val = digits[i+1]     sethue(colors[from_val+1])      f = from_val+(i-1)\/max_digits     t = to_val+i\/max_digits      from = get_coord(f, radius)     to = get_coord(t, radius)      # get the correct mid point for example for 0-9 it should be 9.5 and not 4.5     mid_val = (f+t)\/2     mid_control = get_coord(mid_val, small_radius)     if abs(f-t) &gt;= 5         mid_control = get_coord(mid_val+5, small_radius)     end      pts = Point[from, mid_control, mid_control, to]     bezpath = BezierPathSegment(pts...)     drawbezierpath(bezpath, :stroke, close=false) end<\/code><\/pre>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/tl\/ht\/gy\/tlhtgy6ghj5hwmyv4s7yala6x90.png\"><\/p>\n<p>  <\/p>\n<p>\u0414\u0443\u043c\u0430\u044e, \u0443\u0436\u0435 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0445\u043e\u0440\u043e\u0448\u043e. \u0426\u0432\u0435\u0442\u0430 \u043b\u0438\u043d\u0438\u0439 \u043f\u043e\u0434\u0433\u043e\u043d\u044f\u044e\u0442\u0441\u044f \u043f\u043e\u0434 \u0446\u0432\u0435\u0442\u0430 \u0438\u0437 \u043f\u043e\u0434 \u0446\u0438\u0444\u0440. \u0418\u0442\u0430\u043a, \u0432 \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u043c\u043e\u043c\u0435\u043d\u0442 \u043c\u044b \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u043c \u043e\u0442 9 \u043a 2. \u0412\u043c\u0435\u0441\u0442\u043e \u044d\u0442\u043e\u0433\u043e \u044f \u0445\u043e\u0442\u0435\u043b \u0431\u044b \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c, \u043a\u0443\u0434\u0430 \u043c\u044b \u0438\u0434\u0435\u043c \u0438 \u043e\u0442\u043a\u0443\u0434\u0430 \u0438\u0434\u0435\u043c. \u042d\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e <code>blend<\/code> \u0438 <code>setblend<\/code>. \u042d\u0442\u043e \u043b\u0438\u043d\u0435\u0439\u043d\u0430\u044f \u0441\u043c\u0435\u043d\u0430 \u0446\u0432\u0435\u0442\u0430 &quot;\u043e\u0442&quot; \u0438 &quot;\u0434\u043e&quot;, \u0442\u0430\u043a \u0447\u0442\u043e \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u043d\u0435 \u043f\u043e \u043a\u0440\u0438\u0432\u043e\u0439, \u043d\u043e \u044f \u0434\u0443\u043c\u0430\u044e, \u0447\u0442\u043e \u043e\u043d\u0430 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0445\u043e\u0440\u043e\u0448\u0430.<\/p>\n<p>  <\/p>\n<pre><code class=\"julia\">setblend(blend(from, to, colors[to_val+1], colors[from_val+1]))<\/code><\/pre>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/yb\/i3\/nv\/ybi3nvrfqvqn4cm9ls-pdwtxui4.png\"><\/p>\n<p>  <\/p>\n<p>\u042d\u0442\u043e \u043f\u043e\u0445\u043e\u0436\u0435 \u043d\u0430 <code>sethue<\/code> \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0437\u0430\u0434\u0430\u0442\u044c \u0435\u0433\u043e \u0432 \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u043c\u043e\u043c\u0435\u043d\u0442, \u043f\u0440\u0435\u0436\u0434\u0435 \u0447\u0435\u043c \u043c\u044b \u0432\u044b\u0437\u043e\u0432\u0435\u043c <code>drawbezierpath<\/code>.<\/p>\n<p>  <\/p>\n<p>\u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0434\u043e\u0431\u0430\u0432\u0438\u043c \u0435\u0449\u0435 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0446\u0438\u0444\u0440 \u0438 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0443\u043c\u0435\u043d\u044c\u0448\u0438\u043c \u0448\u0438\u0440\u0438\u043d\u0443 \u043b\u0438\u043d\u0438\u0438: <code>setline(0.1)<\/code><\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/bs\/9x\/_k\/bs9x_k67rzwu1mjmtfu7yujfwhw.png\"><\/p>\n<p>  <\/p>\n<p>\u041b\u0430\u0434\u043d\u043e \u044f \u0434\u0443\u043c\u0430\u044e \u0447\u0442\u043e \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0439 \u0440\u0430\u0434\u0438\u0443\u0441 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0432\u0435\u043b\u0438\u043a:<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">small_radius = 40<\/code><\/pre>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/pf\/ln\/zu\/pflnzumljkolymcf-qa-sclzjka.png\"><\/p>\n<p>  <\/p>\n<p>\u0417\u0430\u0442\u0435\u043c \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c <math><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/7af\/18b\/081\/7af18b0819e3a7a12aadc52f24feb01f.svg\" alt=\"$\\pi$\" data-tex=\"inline\"><\/math> \u0432 \u0441\u0435\u0440\u0435\u0434\u0438\u043d\u0435, \u043f\u0440\u0435\u0436\u0434\u0435 \u0447\u0435\u043c \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043e\u0447\u0438\u0441\u0442\u0438\u0442\u044c \u043a\u043e\u0434, \u0447\u0442\u043e\u0431\u044b \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043d\u0430\u0448\u0443 \u043f\u0435\u0440\u0432\u0443\u044e \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u044e.<\/p>\n<p>  <\/p>\n<p>Luxor.jl \u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 <del>\u043b\u0430\u0442\u0435\u043a\u0441\u043d\u044b\u0435 \u0441\u0442\u0440\u0438\u043d\u0433\u0438<\/del> <a href=\"https:\/\/github.com\/stevengj\/LaTeXStrings.jl\" rel=\"nofollow\">LaTeXStrings.jl<\/a> \u2014 \u044d\u0442\u043e \u043e\u0431\u043b\u043e\u043c, \u043d\u043e \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c <a href=\"https:\/\/github.com\/SimonDanisch\/UnicodeFun.jl\" rel=\"nofollow\">UnicodeFun.jl<\/a>.<\/p>\n<p>  <\/p>\n<pre><code class=\"julia\">using UnicodeFun center_text = to_latex(&quot;\\\\pi&quot;)<\/code><\/pre>\n<p>  <\/p>\n<p>\u0438 \u043f\u0440\u043e\u043c\u0435\u0436 \u0446\u0438\u043a\u043b\u043e\u0432 \u0441\u0442\u0430\u0432\u0438\u043c:<\/p>\n<p>  <\/p>\n<pre><code class=\"julia\">sethue(&quot;white&quot;) fontsize(60) text(center_text, Point(-2, 0), valign=:middle, halign=:center)<\/code><\/pre>\n<p>  <\/p>\n<p>\u041c\u043d\u0435 \u043a\u0430\u0436\u0435\u0442\u0441\u044f <code>Point(-2, 0)<\/code> \u0431\u043e\u043b\u0435\u0435 \u0446\u0435\u043d\u0442\u0440\u0430\u043b\u044c\u043d\u0430\u044f, \u0447\u0435\u043c <code>Point(0, 0)<\/code> \u0438\u043b\u0438 <code>O<\/code>.<\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/sh\/bm\/g-\/shbmg-c8nruqewjh_suph-9guyi.png\"><\/p>\n<p>  <\/p>\n<h2 id=\"animaciya\">\u0410\u043d\u0438\u043c\u0430\u0446\u0438\u044f<\/h2>\n<p>  <\/p>\n<p>\u042f \u0445\u043e\u0442\u0435\u043b \u0431\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c gif \u0438\u0437 \u043a\u043e\u043d\u0432\u0435\u0439\u0435\u0440\u0430 \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0442\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u0447\u0442\u043e\u0431\u044b \u0432 \u043a\u0430\u0436\u0434\u043e\u043c \u043a\u0430\u0434\u0440\u0435 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u043b\u0430\u0441\u044c \u043d\u043e\u0432\u0430\u044f \u043b\u0438\u043d\u0438\u044f.<\/p>\n<p>  <\/p>\n<p>\u0412 \u041b\u0443\u043a\u0441\u043e\u0440\u0435 \u044d\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u0438 <code>animate<\/code>, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0431\u0435\u0440\u0435\u0442 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u0446\u0435\u043d \u0438 \u0438\u0445 \u043d\u043e\u043c\u0435\u0440\u0430 \u043a\u0430\u0434\u0440\u043e\u0432. \u042d\u0442\u043e \u0442\u0430\u043a\u0436\u0435 \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0442 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0431\u043e\u043b\u044c\u0448\u0443\u044e \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u043a\u043e\u0434\u0430. <\/p>\n<p>  <\/p>\n<p>\u0423 \u043d\u0430\u0441 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0441\u0446\u0435\u043d\u0430 \u0434\u043b\u044f \u0443\u0441\u0442\u043e\u0439\u0447\u0438\u0432\u043e\u0433\u043e \u0444\u043e\u043d\u0430 \u0438 \u043e\u0434\u043d\u0430 \u0434\u043b\u044f \u043b\u0438\u043d\u0438\u0439.<\/p>\n<p>  <\/p>\n<p>\u041f\u0440\u0435\u0436\u0434\u0435 \u0447\u0435\u043c \u043c\u044b \u043d\u0430\u043f\u0438\u0448\u0435\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u044e, \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u043c \u043e\u0447\u0435\u043d\u044c \u043a\u043e\u0440\u043e\u0442\u043a\u0443\u044e \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u044e, \u0447\u0442\u043e\u0431\u044b \u0443\u0432\u0438\u0434\u0435\u0442\u044c, \u043a\u0430\u043a \u044d\u0442\u043e \u0434\u0435\u043b\u0430\u0435\u0442\u0441\u044f.<\/p>\n<p>  <\/p>\n<pre><code class=\"julia\">function draw_background(scene, framenumber)     background(&quot;black&quot;) end  function circ(scene, framenumber)     setdash(&quot;dot&quot;)     sethue(&quot;white&quot;)     translate(-200, 0)     @layer begin          translate(framenumber*2, 0)         circle(O, 50, :fill)     end end  function anim()     anim = Movie(600, 200, &quot;test&quot;)      animate(anim, [         Scene(anim, draw_background, 0:200),         Scene(anim, circ, 0:200),     ],     creategif = true,     pathname = &quot;.\/test.gif&quot;     ) end<\/code><\/pre>\n<p>  <\/p>\n<p>\u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u043c\u044b \u0441\u043e\u0437\u0434\u0430\u0435\u043c <code>Movie<\/code> \u0441 <code>width<\/code>, <code>height<\/code> \u0438 <code>name<\/code>.<br \/>  \u0417\u0430\u0442\u0435\u043c \u043c\u044b \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u043c <code>animate<\/code> \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u043e\u0433\u043e <code>Movie<\/code> \u0438 \u0441\u043f\u0438\u0441\u043a\u0430 <code>scenes<\/code>, \u0430 \u0437\u0430\u0442\u0435\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0438 \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d \u043a\u0430\u0434\u0440\u043e\u0432, \u043d\u0430\u0447\u0438\u043d\u0430\u044e\u0449\u0438\u0445\u0441\u044f \u0441 0.<\/p>\n<p>  <\/p>\n<p>\u041f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0432\u044b\u0437\u043e\u0432 <code>draw_background(\u0441\u0446\u0435\u043d\u0430, 0)<\/code> \u0438 <code>circ(scene, 0)<\/code> \u0434\u043b\u044f \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u043a\u0430\u0434\u0440\u0430. \u0421\u0446\u0435\u043d\u0430 \u043c\u043e\u0436\u0435\u0442 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0434\u043b\u044f \u043d\u0430\u0448\u0435\u0439 \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u0438. \u041e\u0441\u0442\u0430\u043b\u044c\u043d\u043e\u0435 \u0432 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u043c \u0442\u0430\u043a \u0436\u0435, \u043a\u0430\u043a \u0438 \u0440\u0430\u043d\u044c\u0448\u0435, \u043f\u0440\u043e\u0441\u0442\u043e \u043c\u044b \u043c\u043e\u0436\u0435\u043c, \u043a\u043e\u043d\u0435\u0447\u043d\u043e, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e <code>framenumber<\/code>.<\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/jt\/nu\/rv\/jtnurvfrvh45a7wqwne8ri9q3wo.gif\"><\/p>\n<p>  <\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u044f \u0440\u0430\u0437\u0434\u0435\u043b\u044e \u0432\u0441\u0435 \u044d\u0442\u043e \u0434\u0435\u043b\u043e \u043d\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0438 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044e \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435, \u0442\u0430\u043a\u0438\u0435 \u043a\u0430\u043a \u0446\u0438\u0444\u0440\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u044b \u0445\u043e\u0442\u0438\u043c \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c, \u0447\u0442\u043e\u0431\u044b \u043d\u0430\u043c \u0431\u044b\u043b\u043e \u043b\u0435\u0433\u0447\u0435 \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c <math><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/c36\/093\/55f\/c3609355f164a03db73ff187d34111ce.svg\" alt=\"$\\tau$\" data-tex=\"inline\"><\/math> \u0438\u043b\u0438 \u0434\u0440\u0443\u0433\u0438\u0435 \u0432\u0435\u0449\u0438.<\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/ql\/3-\/eh\/ql3-ehz7nnl4tp0fsyyetti8dco.gif\"><\/p>\n<p>  <\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">\u041f\u043e\u043b\u043d\u044b\u0439 \u043a\u043e\u0434<\/b>                         <\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"plaintext\">using Luxor, ColorSchemes using UnicodeFun  function get_coord(val, radius)     \u03b8 = 2\u03c0*0.1*val     return Point(         radius*sin(\u03b8),         -radius*cos(\u03b8),     ) end  function draw_background(scene, framenumber)     background(&quot;black&quot;)      radius = scene.opts[:radius]     colors = scene.opts[:colors]     center_text = scene.opts[:center_text]      for i in 0:9         from = get_coord(i, radius)         to = get_coord(i+1, radius)         sethue(colors[i+1])          \u03b8 = 2\u03c0*0.1*i+0.1*\u03c0         mid = Point(             radius*sin(\u03b8),             -radius*cos(\u03b8),         )         label(string(i), -\u03c0\/2+\u03b8, mid; offset=15)         move(from)         arc2r(O, from, to, :stroke)     end      sethue(&quot;white&quot;)     fontsize(60)     text(center_text, Point(-2, 0), valign=:middle, halign=:center) end  function dig_line(scene, framenumber)     radius = scene.opts[:radius]     colors = scene.opts[:colors]     center_text = scene.opts[:center_text]     bezier_radius = scene.opts[:bezier_radius]     max_digits = scene.opts[:max_digits]     digits = scene.opts[:digits]      setline(0.1)      for i in 1:min(framenumber, max_digits-1)         from_val = digits[i]         to_val = digits[i+1]          f = from_val+(i-1)\/max_digits         t = to_val+i\/max_digits          from = get_coord(f, radius)         to = get_coord(t, radius)          # get the correct mid point for example for 0-9 it should be 9.5 and not 4.5         mid_val = (f+t)\/2         mid_control = get_coord(mid_val, bezier_radius)         if abs(f-t) &gt;= 5             mid_control = get_coord(mid_val+5, bezier_radius)         end          pts = Point[from, mid_control, mid_control, to]         bezpath = BezierPathSegment(pts...)         # reverse the color to see where it is going         setblend(blend(from, to, colors[to_val+1], colors[from_val+1]))         drawbezierpath(bezpath, :stroke, close=false)     end end  function anim()     anim = Movie(700, 300, &quot;test&quot;)      radius = 100     bezier_radius = 40     colors = ColorSchemes.rainbow[7:end]     max_digits = 1000     center_text = to_latex(&quot;\\\\pi&quot;)      digits_arr = setprecision(BigFloat, Int(ceil(log2(10) * max_digits+10))) do         return parse.(Int, collect(string(BigFloat(pi))[3:max_digits+2]))     end      args = Dict(:radius =&gt; radius,         :bezier_radius =&gt; bezier_radius,         :colors =&gt; colors, :max_digits =&gt; max_digits,         :digits =&gt; digits_arr, :center_text =&gt; center_text     )      animate(anim, [         Scene(anim, draw_background, 0:max_digits+50, optarg=args),         Scene(anim, dig_line, 0:max_digits+50, optarg=args),     ],     creategif = true,     pathname = &quot;.\/pi_first.gif&quot;     ) end<\/code><\/pre>\n<\/div><\/div>\n<p>  <\/p>\n<p>\u0415\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0435, \u0447\u0442\u043e \u044f \u0435\u0449\u0435 \u043d\u0435 \u043e\u0431\u044a\u044f\u0441\u043d\u0438\u043b, \u2014 \u044d\u0442\u043e <code>optarg<\/code> \u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 <code>Scene<\/code> \u0438 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u0435\u0433\u043e \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e <code>radius = scene.opts[:radius]<\/code>.<\/p>\n<p>  <\/p>\n<p>\u041c\u044b \u043a\u0430\u043a \u0431\u044b \u043f\u043e\u0442\u0435\u0440\u044f\u043b\u0438 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u043f\u0440\u043e\u0441\u0442\u044b\u0435 \u043e\u0431\u0440\u0430\u0437\u044b. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u044f \u0441\u043e\u0437\u0434\u0430\u043b \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 <\/p>\n<p>  <\/p>\n<pre><code class=\"julia\">struct PNGScene     opts::Dict{Symbol, Any} end<\/code><\/pre>\n<p>  <\/p>\n<p>\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u044b \u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 <code>anim<\/code>, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u044f \u043f\u0435\u0440\u0435\u0438\u043c\u0435\u043d\u0443\u044e \u0432 <code>viz<\/code> \ud83d\ude00<\/p>\n<p>  <\/p>\n<p>\u0422\u043e\u0433\u0434\u0430 \u044f \u043c\u043e\u0433\u0443 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0447\u0442\u043e-\u0442\u043e \u0432\u0440\u043e\u0434\u0435:<\/p>\n<p>  <\/p>\n<pre><code class=\"julia\">scene = PNGScene(args) @png begin     draw_background(scene, max_digits)     dig_line(scene, max_digits) end 700 300 &quot;.\/$fname.png&quot;<\/code><\/pre>\n<p>  <\/p>\n<p>\u041d\u0435 \u0432\u043e\u043b\u043d\u0443\u0439\u0442\u0435\u0441\u044c, \u0432 \u043a\u043e\u043d\u0446\u0435 \u0435\u0441\u0442\u044c \u0440\u0435\u043f\u043a\u0430, \u0433\u0434\u0435 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0443\u0432\u0438\u0434\u0435\u0442\u044c \u0432\u0435\u0441\u044c \u043a\u043e\u0434 \u0446\u0435\u043b\u0438\u043a\u043e\u043c. \u041f\u0440\u043e\u0441\u0442\u043e \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0441\u043b\u043e\u0436\u043d\u043e \u043e\u043f\u0438\u0441\u0430\u0442\u044c \u0437\u0434\u0435\u0441\u044c \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f.<\/p>\n<p>  <\/p>\n<p>\u041c\u043e\u0436\u0435\u0442, \u043c\u043d\u0435 \u0441\u0442\u043e\u0438\u043b\u043e \u0441\u043d\u044f\u0442\u044c \u0432\u0438\u0434\u0435\u043e? \ud83d\ude00<\/p>\n<p>  <\/p>\n<h2 id=\"dobavlenie-tochki-feynmana\">\u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0442\u043e\u0447\u043a\u0438 \u0424\u0435\u0439\u043d\u043c\u0430\u043d\u0430<\/h2>\n<p>  <\/p>\n<p>\u041c\u044b \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043b\u0438 \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435 \u0446\u0438\u0444\u0440 \u0441 \u0446\u0438\u0444\u0440\u0430\u043c\u0438 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u0440\u0438\u0432\u044b\u0445, \u043d\u043e \u0435\u0441\u043b\u0438 \u0431\u044b \u0443 \u043d\u0430\u0441 \u0432\u0441\u0442\u0440\u0435\u0442\u0438\u043b\u043e\u0441\u044c \u0447\u0442\u043e-\u0442\u043e \u0432\u0440\u043e\u0434\u0435 <code>555<\/code> \u0432 \u0446\u0438\u0444\u0440\u0430\u0445, \u043c\u044b \u0431\u044b \u0432\u0438\u0434\u0435\u043b\u0438 \u0442\u043e\u043b\u044c\u043a\u043e \u043b\u0438\u043d\u0438\u044e, \u0438\u0434\u0443\u0449\u0443\u044e \u0432 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0438 \u0446\u0435\u043d\u0442\u0440\u0430 \u0438 \u043e\u0431\u0440\u0430\u0442\u043d\u043e (\u0438\u043b\u0438, \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c, \u043c\u044b \u0432\u0438\u0434\u0438\u043c \u0434\u0432\u0435 \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u043d\u0430\u0448\u0438\u0445 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0445 \u0446\u0438\u0444\u0440, \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0438 \u0442. \u0434.)<\/p>\n<p>  <\/p>\n<p>\u0412\u043c\u0435\u0441\u0442\u043e \u044d\u0442\u043e\u0433\u043e \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u0443\u044e \u0442\u043e\u0447\u043a\u0443 \u0432\u0441\u044f\u043a\u0438\u0439 \u0440\u0430\u0437, \u043a\u043e\u0433\u0434\u0430 \u044d\u0442\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442. \u042d\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0431\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u0443 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 <code>show_dots<\/code>, \u0447\u0442\u043e \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043d\u0430\u0439\u0442\u0438 \u0432 \u043c\u043e\u0435\u043c \u043a\u043e\u0434\u0435 \ud83d\ude09<\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/qy\/mm\/qw\/qymmqwttzszwkrrq_zkeogihi3e.png\"><\/p>\n<p>  <\/p>\n<p>\u042f \u0442\u043e\u043b\u044c\u043a\u043e \u0447\u0442\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u043b \u0434\u043b\u0438\u043d\u0443 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438, \u0438 \u043a\u043e\u0433\u0434\u0430 \u043e\u043d\u0430 \u0431\u043e\u043b\u044c\u0448\u0435 1, \u044f \u0440\u0438\u0441\u0443\u044e \u043a\u0440\u0443\u0433, \u0433\u0434\u0435 \u044d\u0442\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442, \u0438 \u0446\u0432\u0435\u0442 \u2014 \u044d\u0442\u043e \u0446\u0438\u0444\u0440\u0430 \u043f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0439 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438. \u0411\u043e\u043b\u044c\u0448\u043e\u0439 \u043a\u0440\u0443\u0433 \u0432 \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0435 9 \u2014 \u044d\u0442\u043e \u0442\u0430\u043a \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u043c\u0430\u044f \u0442\u043e\u0447\u043a\u0430 \u0424\u0435\u0439\u043d\u043c\u0430\u043d\u0430, \u0433\u0434\u0435 \u0446\u0438\u0444\u0440\u0430 9 \u043f\u043e\u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f 6 \u0440\u0430\u0437 \u0432 \u043f\u043e\u0437\u0438\u0446\u0438\u0438 762.<\/p>\n<p>  <\/p>\n<h2 id=\"dobavlenie-gistogramm\">\u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0433\u0438\u0441\u0442\u043e\u0433\u0440\u0430\u043c\u043c<\/h2>\n<p>  <\/p>\n<p>\u041f\u043e\u0441\u043b\u0435\u0434\u043d\u044f\u044f \u0432\u0435\u0449\u044c \u0432 \u043c\u043e\u0435\u043c \u0441\u043f\u0438\u0441\u043a\u0435 \u2014 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0433\u0438\u0441\u0442\u043e\u0433\u0440\u0430\u043c\u043c\u0443 \u043d\u0430 \u043a\u0430\u0436\u0434\u043e\u043c \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0435, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c, \u0441\u043b\u0443\u0447\u0430\u044e\u0442\u0441\u044f \u043b\u0438 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043a\u043e\u043c\u0431\u0438\u043d\u0430\u0446\u0438\u0438 \u043f\u0430\u0440 \u0447\u0430\u0449\u0435, \u0447\u0435\u043c \u0434\u0440\u0443\u0433\u0438\u0435.<\/p>\n<p>  <\/p>\n<p>\u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u044e <code>poly<\/code> \u0441 \u0447\u0435\u0442\u044b\u0440\u044c\u043c\u044f \u0442\u043e\u0447\u043a\u0430\u043c\u0438. \u0412 \u0438\u0434\u0435\u0430\u043b\u0435, \u043e\u043d\u0430 \u0434\u043e\u043b\u0436\u043d\u0430 \u0431\u044b\u0442\u044c \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0430 \u0434\u0432\u0443\u043c\u044f \u0434\u0443\u0433\u0430\u043c\u0438, \u0430 \u043d\u0435 \u0434\u0432\u0443\u043c\u044f \u043b\u0438\u043d\u0438\u044f\u043c\u0438, \u043d\u043e \u044f \u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e \u044d\u0442\u043e \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u044e \ud83d\ude42<\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/zr\/8m\/sm\/zr8msm-z9eqdczyztb2im-n1aey.png\"><\/p>\n<p>  <\/p>\n<h2 id=\"tau\">\u0422\u0430\u0443<\/h2>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/xh\/05\/vc\/xh05vcc79k433vdn4bzshxcmxaa.png\"><\/p>\n<p>  <\/p>\n<p>\u0414\u0430, \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0431\u044b \u0432 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0435 \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e\u0435 \u0447\u0438\u0441\u043b\u043e \u0441 1000 \u0446\u0438\u0444\u0440\u0430\u043c\u0438 \u0438 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u044b\u0439 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442&#8230;<\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/dd\/ss\/85\/ddss85uzfpkn1djejsadjfkc9ic.png\"><\/p>\n<p>  <\/p>\n<h2 id=\"prostoe-chislo\">\u041f\u0440\u043e\u0441\u0442\u043e\u0435 \u0447\u0438\u0441\u043b\u043e<\/h2>\n<p>  <\/p>\n<p>\u0412 \u0434\u0432\u0443\u0445 \u0441\u043b\u043e\u0432\u0430\u0445: \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u043d\u0430\u0448\u0435\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0434\u043b\u044f \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0431\u043e\u043b\u044c\u0448\u0438\u043b\u0441\u0442\u0432\u0430 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u043d\u0435 \u0442\u0430\u043a \u0440\u0430\u0437\u0443\u043c\u043d\u043e, \u043d\u043e \u0442\u0430\u043a \u0438\u043b\u0438 \u0438\u043d\u0430\u0447\u0435 \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0441\u044f \u0447\u0442\u043e-\u0442\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u0435.<\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/r3\/p4\/xo\/r3p4xoysiostcq-tle9ovs0idiw.png\"><\/p>\n<p>  <\/p>\n<p>\u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0447\u0438\u0441\u043b\u043e\u0432\u043e\u0439 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0435 \u0446\u0438\u0444\u0440\u044b \u043f\u0440\u043e\u0441\u0442\u044b\u0445 \u0447\u0438\u0441\u0435\u043b. \u042f \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043b \u043f\u0440\u043e\u0441\u0442\u044b\u0435 \u0447\u0438\u0441\u043b\u0430 \u043c\u0435\u043d\u044c\u0448\u0435 100 000. \u0427\u0435\u0441\u0442\u043d\u043e \u0433\u043e\u0432\u043e\u0440\u044f, \u0441\u043e\u0435\u0434\u0438\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043b\u0438\u043d\u0438\u0438 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0431\u0435\u0441\u043f\u043e\u043b\u0435\u0437\u043d\u044b, \u0442\u0430\u043a \u043a\u0430\u043a \u0431\u043e\u043b\u044c\u0448\u0443\u044e \u0447\u0430\u0441\u0442\u044c \u0432\u0440\u0435\u043c\u0435\u043d\u0438 (\u0435\u0441\u043b\u0438 \u043c\u044b \u0438\u0433\u043d\u043e\u0440\u0438\u0440\u0443\u0435\u043c \u043f\u0435\u0440\u0432\u044b\u0435 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u043e\u0441\u0442\u044b\u0445 \u0447\u0438\u0441\u0435\u043b: \u0432\u0441\u0435 \u0432\u0440\u0435\u043c\u044f) \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b \u0442\u043e\u043b\u044c\u043a\u043e \u0447\u0435\u0442\u044b\u0440\u0435 \u0446\u0438\u0444\u0440\u044b. \u042d\u0442\u043e \u0441\u043e\u0437\u0434\u0430\u0435\u0442 \u0441\u0432\u043e\u0435\u0433\u043e \u0440\u043e\u0434\u0430 \u0431\u0435\u0441\u043f\u043e\u0440\u044f\u0434\u043e\u043a \u0432 \u0441\u0435\u0440\u0435\u0434\u0438\u043d\u0435. <\/p>\n<p>  <\/p>\n<p>\u0422\u0435\u043c \u043d\u0435 \u043c\u0435\u043d\u0435\u0435, \u0433\u0438\u0441\u0442\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u0441\u0442\u0430\u043d\u043e\u0432\u044f\u0442\u0441\u044f \u0432\u0441\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u0435\u0435, \u044f \u0434\u0443\u043c\u0430\u044e:<\/p>\n<p>  <\/p>\n<p>\u042d\u0442\u043e \u044f\u0441\u043d\u043e \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442, \u0447\u0442\u043e \u043d\u0435 \u0432\u0441\u0435 \u043f\u0430\u0440\u044b \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u043e \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u044b. \u041e\u0441\u043e\u0431\u0435\u043d\u043d\u043e, \u0435\u0441\u043b\u0438 \u0443 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c \u043f\u0440\u043e\u0441\u0442\u043e\u0435 \u0447\u0438\u0441\u043b\u043e <math><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/83d\/485\/d8f\/83d485d8f2fea46afa5eb363d66fa92f.svg\" alt=\"$p_n$\" data-tex=\"inline\"><\/math> \u0441 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0439 \u0446\u0438\u0444\u0440\u043e\u0439 x, \u0442\u043e \u0432\u0441\u0435\u0433\u0434\u0430 \u043c\u0435\u043d\u0435\u0435 \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e, \u0447\u0442\u043e \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u044f\u044f \u0446\u0438\u0444\u0440\u0430 <math><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/fef\/bf1\/667\/fefbf1667fafcdfc00dd6d017eefd486.svg\" alt=\"$p_{n+1}$\" data-tex=\"inline\"><\/math> \u0442\u0430\u043a\u0436\u0435 \u0437\u0430\u043a\u0430\u043d\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043d\u0430 x \u043f\u043e \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044e \u0441 \u043e\u0434\u043d\u0438\u043c \u0438\u0437 \u0442\u0440\u0435\u0445 \u0434\u0440\u0443\u0433\u0438\u0445 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u043e\u0432.<\/p>\n<p>  <\/p>\n<p>\u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0441\u043e\u0441\u0440\u0435\u0434\u043e\u0442\u043e\u0447\u0438\u043c\u0441\u044f \u043d\u0430 \u0433\u0438\u0441\u0442\u043e\u0433\u0440\u0430\u043c\u043c\u0430\u0445 \u0438 \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u043c \u043f\u0440\u043e\u0441\u0442\u044b\u0435 \u0447\u0438\u0441\u043b\u0430 \u043f\u043e\u0434 10 000 000:<\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/2t\/pp\/qt\/2tppqt4_r3z2ykippql9ikb9ggg.png\"><\/p>\n<p>  <\/p>\n<p>\u0423\u0437\u043e\u0440 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u0442\u0441\u044f.<\/p>\n<p>  <\/p>\n<h2 id=\"kod\">\u041a\u043e\u0434<\/h2>\n<p>  <\/p>\n<p>\u041e\u043a\u0430\u0439, \u0442\u0443\u0442 \u0443 \u043d\u0430\u0441 <a href=\"https:\/\/gist.github.com\/Wikunia\/aa6f8b95e53576ca8f8e592c70258787\" rel=\"nofollow\">\u0440\u0435\u043f\u043a\u0430<\/a><\/p>\n<p>  <\/p>\n<p>\u042f \u0445\u043e\u0442\u0435\u043b \u0431\u044b \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0447\u0442\u043e-\u0442\u043e \u0432\u0440\u043e\u0434\u0435 \u0448\u0442\u0443\u0447\u0435\u043a, \u0438\u0437 <a href=\"https:\/\/www.youtube.com\/channel\/UCYO_jab_esuFRV4b17AJtAw\" rel=\"nofollow\">3b1b<\/a>.<\/p>\n<p>  <\/p>\n<p>\u041f\u043e \u043a\u0440\u0430\u0439\u043d\u0435\u0439 \u043c\u0435\u0440\u0435, \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0438\u0435 \u043f\u0440\u043e\u0441\u0442\u044b\u0435 \u0432\u0435\u0440\u0441\u0438\u0438 \u0441 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u043c\u0438 \u0443\u0434\u043e\u0431\u043d\u044b\u043c\u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u044f\u043c\u0438 \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \ud83d\ude42<\/p>\n<p>  <\/p>\n<p><strong>\u0421\u043f\u0430\u0441\u0438\u0431\u043e \u0437\u0430 \u0447\u0442\u0435\u043d\u0438\u0435 \u0438 \u043e\u0441\u043e\u0431\u0430\u044f \u0431\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u043d\u043e\u0441\u0442\u044c \u043c\u043e\u0438\u043c 10 \u043f\u043e\u043a\u0440\u043e\u0432\u0438\u0442\u0435\u043b\u044f\u043c!<\/strong><\/p>\n<p>  <\/p>\n<p>\u042f \u0431\u0443\u0434\u0443 \u0434\u0435\u0440\u0436\u0430\u0442\u044c \u0432\u0430\u0441 \u0432 \u043a\u0443\u0440\u0441\u0435 \u0441\u043e\u0431\u044b\u0442\u0438\u0439 \u043d\u0430 <a href=\"https:\/\/twitter.com\/opensourcesblog\" rel=\"nofollow\">Twitter OpenSourcES<\/a> \u0438 \u043d\u0430 \u0431\u043e\u043b\u0435\u0435 \u043b\u0438\u0447\u043d\u043e\u043c:<br \/>  <a href=\"https:\/\/twitter.com\/wikunia_de\" rel=\"nofollow\">Twitter Wikunia_de<\/a><\/p>\n<\/div>\n<p> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/post\/531050\/\"> https:\/\/habr.com\/ru\/post\/531050\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"\n<div class=\"post__text post__text-html post__text_v1\" id=\"post-content-body\">\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/rg\/ym\/36\/rgym36moidgkyvbcdnsn_twvu6i.jpeg\"><br \/>  <em><a href=\"https:\/\/www.flickr.com\/photos\/153311384@N03\/\" rel=\"nofollow\">\u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f<\/a><\/em><\/p>\n<p>  <\/p>\n<p>\u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u0432\u044b \u0432\u0438\u0434\u0435\u043b\u0438 <a href=\"https:\/\/opensourc.es\/blog\/visualizing-the-irrational-vote\" rel=\"nofollow\">\u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0439 \u043f\u043e\u0441\u0442<\/a>, \u0433\u0434\u0435 \u0431\u044b\u043b\u0438 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u044b \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043f\u0435\u0440\u0432\u044b\u0445 1000 \u0446\u0438\u0444\u0440 <math><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/c27\/0d4\/b16\/c270d4b16336541e5969ea219b5b6621.svg\" alt=\"$\\pi, \\tau$\" data-tex=\"inline\"><\/math> \u0438 <math><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/f38\/123\/f47\/f38123f47bec55f208d0b4d1c82a83c0.svg\" alt=\"$\\sqrt{2}$\" data-tex=\"inline\"><\/math>. \u041e\u043d \u0432\u043e\u0437\u043d\u0438\u043a \u0432 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0433\u043e \u0441\u043f\u043e\u0440\u0430 \u043e \u0442\u043e\u043c, \u043b\u0443\u0447\u0448\u0435 \u043b\u0438 <math><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/c36\/093\/55f\/c3609355f164a03db73ff187d34111ce.svg\" alt=\"$\\tau$\" data-tex=\"inline\"><\/math>, \u0447\u0435\u043c <math><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/7af\/18b\/081\/7af18b0819e3a7a12aadc52f24feb01f.svg\" alt=\"$\\pi$\" data-tex=\"inline\"><\/math>. \u041f\u043e \u044d\u0442\u043e\u043c\u0443 \u043f\u043e\u0432\u043e\u0434\u0443 \u0438\u0434\u0443\u0442 \u0431\u0435\u0441\u043a\u043e\u043d\u0435\u0447\u043d\u044b\u0435 \u0434\u0435\u0431\u0430\u0442\u044b, \u0438 \u044f \u043f\u043e\u0434\u0443\u043c\u0430\u043b, \u0447\u0442\u043e \u043c\u043e\u0433\u0443 \u043f\u043e\u0448\u0443\u0442\u0438\u0442\u044c \u043f\u043e \u044d\u0442\u043e\u043c\u0443 \u043f\u043e\u0432\u043e\u0434\u0443. \u0412 \u044d\u0442\u043e\u043c \u043f\u043e\u0441\u0442\u0435 \u044f \u0445\u043e\u0447\u0443 \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c, \u043a\u0430\u043a \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438, \u0438 \u043d\u0430\u0434\u0435\u044e\u0441\u044c, \u0447\u0442\u043e \u0432\u044b \u0437\u0430\u0445\u043e\u0442\u0438\u0442\u0435 \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c \u0443\u0434\u0438\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043f\u0430\u043a\u0435\u0442 <a href=\"https:\/\/habr.com\/ru\/post\/459842\/\">Luxor.jl<\/a> \u043f\u043e\u0441\u043b\u0435 \u043f\u0440\u043e\u0447\u0442\u0435\u043d\u0438\u044f. \u0412\u0447\u0435\u0440\u0430 \u044f \u043d\u0430\u0447\u0430\u043b \u0447\u0438\u0442\u0430\u0442\u044c \u0442\u0443\u0442\u043e\u0440\u0438\u0430\u043b, \u0438 \u044d\u0442\u043e \u043f\u043e\u0442\u0440\u044f\u0441\u0430\u044e\u0449\u0435! \u0412 \u043f\u0440\u043e\u0448\u043b\u044b\u0439 \u0440\u0430\u0437 \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0434\u0435\u043b\u0430\u043b\u0430\u0441\u044c \u043d\u0430 Javascript, \u0438 \u044f \u043f\u043e\u0434\u0443\u043c\u0430\u043b, \u0447\u0442\u043e \u044d\u0442\u043e\u0442 \u0430\u043a\u043a\u0443\u0440\u0430\u0442\u043d\u044b\u0439 \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u0438\u0439 \u043f\u0440\u043e\u0435\u043a\u0442 \u0441\u043e\u0439\u0434\u0435\u0442, \u0447\u0442\u043e\u0431\u044b \u043d\u0430\u0447\u0430\u0442\u044c \u0438\u0437\u0443\u0447\u0430\u0442\u044c \u041b\u0443\u043a\u0441\u043e\u0440. \u041a\u0430\u043a \u0443\u0436\u0435 \u0443\u043f\u043e\u043c\u0438\u043d\u0430\u043b\u043e\u0441\u044c \u0432 <a href=\"https:\/\/opensourc.es\/blog\/side-mentoring\" rel=\"nofollow\">let me be your mentor<\/a>: \u044f \u0434\u0443\u043c\u0430\u044e, \u0447\u0442\u043e \u043e\u0447\u0435\u043d\u044c \u0432\u0430\u0436\u043d\u043e \u0438\u043c\u0435\u0442\u044c \u0442\u0430\u043a\u0438\u0435 \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u0438\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u044b, \u0447\u0442\u043e\u0431\u044b \u043e\u0441\u0432\u043e\u0438\u0442\u044c \u043d\u043e\u0432\u044b\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-314631","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/314631","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=314631"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/314631\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=314631"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=314631"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=314631"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}