{"id":323135,"date":"2021-05-14T15:01:02","date_gmt":"2021-05-14T15:01:02","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=323135"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=323135","title":{"rendered":"\u0421 \u043f\u043e\u043c\u043e\u0449\u044c\u044e Python \u0441\u043e\u0437\u0434\u0430\u0451\u043c \u043c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u0438, \u043a\u0430\u043a \u043d\u0430 \u043a\u0430\u043d\u0430\u043b\u0435 3Blue1Brown"},"content":{"rendered":"\n<div class=\"post__text post__text_v2\" id=\"post-content-body\">\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/3d1\/596\/2af\/3d15962af6ff2be5f248ee19ca44048c.png\" width=\"670\" height=\"370\"><figcaption><\/figcaption><\/figure>\n<p>\u0412\u044b \u043d\u0430\u0432\u0435\u0440\u043d\u044f\u043a\u0430 \u043a\u043e\u0433\u0434\u0430-\u0442\u043e \u0438\u0441\u043f\u044b\u0442\u044b\u0432\u0430\u043b\u0438 \u0442\u0440\u0443\u0434\u043d\u043e\u0441\u0442\u0438 \u0432 \u043f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u0438 \u043c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u043a\u043e\u043d\u0446\u0435\u043f\u0446\u0438\u0439 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u043e\u0432 \u043c\u0430\u0448\u0438\u043d\u043d\u043e\u0433\u043e \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f \u0438 \u0434\u043b\u044f \u043b\u0443\u0447\u0448\u0435\u0433\u043e \u043f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u044f \u0442\u0435\u043c\u044b \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0438\u0441\u044c \u043e\u0431\u0443\u0447\u0430\u044e\u0449\u0438\u043c \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u043c 3Blue1Brown. 3Blue1Brown \u2014 \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b\u0439 \u043c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 YouTube-\u043a\u0430\u043d\u0430\u043b, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u0435\u0434\u0451\u0442 \u0413\u0440\u0430\u043d\u0442 \u0421\u0430\u043d\u0434\u0435\u0440\u0441\u043e\u043d. \u041c\u043d\u043e\u0433\u0438\u043c \u043d\u0440\u0430\u0432\u0438\u0442\u0441\u044f 3Blue1Brown \u0437\u0430 \u043f\u0440\u0435\u043a\u0440\u0430\u0441\u043d\u044b\u0435 \u043e\u0431\u044a\u044f\u0441\u043d\u0435\u043d\u0438\u044f \u0413\u0440\u0430\u043d\u0442\u0430 \u0438 \u0432\u0435\u043b\u0438\u043a\u043e\u043b\u0435\u043f\u043d\u044b\u0435 \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u0438.<\/p>\n<p>21 \u043c\u0430\u044f \u0441\u0442\u0430\u0440\u0442\u0443\u0435\u0442 \u043d\u043e\u0432\u044b\u0439 \u043f\u043e\u0442\u043e\u043a \u043a\u0443\u0440\u0441\u0430 \u043e <a href=\"https:\/\/skillfactory.ru\/math-stat-for-ds#syllabus?utm_source=infopartners&amp;utm_medium=habr&amp;utm_campaign=habr_MAT&amp;utm_term=regular&amp;utm_content=140521\">\u043c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u043a\u0435 \u0434\u043b\u044f Data Science<\/a>. \u0421\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u043a \u0435\u0433\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0443 \u043c\u044b \u0434\u0435\u043b\u0438\u043c\u0441\u044f \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u043e\u043c, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0430\u0432\u0442\u043e\u0440 \u0440\u0435\u0448\u0438\u043b \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u0442\u044c, \u043a\u0430\u043a \u0434\u0435\u043b\u0430\u0442\u044c \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u0438, \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u0435 \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u044f\u043c \u043d\u0430 \u043a\u0430\u043d\u0430\u043b\u0435 3Blue1Brown, \u0447\u0442\u043e\u0431\u044b \u0432\u044b \u043c\u043e\u0433\u043b\u0438 \u0438\u043b\u043b\u044e\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u0432\u043e\u0438 \u0438\u0434\u0435\u0438 \u0438 \u0440\u0430\u0441\u0441\u0443\u0436\u0434\u0435\u043d\u0438\u044f \u043e \u043c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u043a\u0435 \u0438 \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e.<\/p>\n<hr>\n<p><iframe id=\"609d574a182877b5cb65a686\" src=\"https:\/\/embedd.srv.habr.com\/iframe\/609d574a182877b5cb65a686\" class=\"embed_video embed__content\" allowfullscreen=\"true\"><\/iframe><\/p>\n<p>\u042f \u0440\u0435\u0448\u0438\u043b \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u0442\u044c \u043e \u0442\u0430\u043a\u0438\u0445 \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u044f\u0445, \u0447\u0442\u043e\u0431\u044b \u0432\u044b \u0441\u0430\u043c\u0438 \u043c\u043e\u0433\u043b\u0438 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u0447\u0442\u043e-\u0442\u043e \u043f\u043e\u0434\u043e\u0431\u043d\u043e\u0435 \u0438 \u043e\u0431\u044a\u044f\u0441\u043d\u044f\u0442\u044c \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0435 \u043d\u0430\u0443\u0447\u043d\u044b\u0435 \u0440\u0430\u0441\u0441\u0443\u0436\u0434\u0435\u043d\u0438\u044f \u0441\u0432\u043e\u0438\u043c \u0442\u043e\u0432\u0430\u0440\u0438\u0449\u0430\u043c, \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440\u0430\u043c \u0438\u043b\u0438 \u043f\u0440\u043e\u0441\u0442\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0443\u044e\u0449\u0438\u043c\u0441\u044f \u043b\u044e\u0434\u044f\u043c.<\/p>\n<p>\u041a \u0441\u0447\u0430\u0441\u0442\u044c\u044e, \u0413\u0440\u0430\u043d\u0442 \u0441\u043e\u0437\u0434\u0430\u043b \u043f\u0430\u043a\u0435\u0442 manim \u043d\u0430 Python, \u044d\u0442\u043e\u0442 \u043f\u0430\u043a\u0435\u0442 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u043c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u0438, \u0438\u043b\u0438 &#171;\u0436\u0438\u0432\u044b\u0435&#187; \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0438. \u0418\u0437 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438 \u0432\u044b \u0443\u0437\u043d\u0430\u0435\u0442\u0435, \u043a\u0430\u043a \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043f\u0430\u043a\u0435\u0442\u0430 manim \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u043c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u0438, \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u0435 \u043f\u0440\u0438\u0432\u0435\u0434\u0451\u043d\u043d\u044b\u043c \u043d\u0438\u0436\u0435.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/7fb\/a2b\/b58\/7fba2bb5871b1ff4bb483e90da471c33.gif\" width=\"854\" height=\"480\"><figcaption><\/figcaption><\/figure>\n<h2>\u0427\u0442\u043e \u0442\u0430\u043a\u043e\u0435 Manim?<\/h2>\n<p>Manim \u2014 \u044d\u0442\u043e \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u043e \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0442\u043e\u0447\u043d\u044b\u0445 \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u0439, \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043f\u043e\u044f\u0441\u043d\u044f\u044e\u0442\u0441\u044f \u0440\u0430\u0437\u043d\u044b\u0435 \u043c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438. \u0421\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0442 \u0434\u0432\u0435 \u0432\u0435\u0440\u0441\u0438\u0438 manim. \u041e\u0434\u043d\u0430 \u0431\u044b\u043b\u0430 <a href=\"https:\/\/github.com\/3b1b\/manim\">\u0441\u043e\u0437\u0434\u0430\u043d\u0430 \u0413\u0440\u0430\u043d\u0442\u043e\u043c<\/a>, \u0430 \u0434\u0440\u0443\u0433\u0430\u044f <a href=\"https:\/\/github.com\/ManimCommunity\/manim\">\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u0430 \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u043e\u043c Manim<\/a>. <\/p>\n<p>\u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0432\u0435\u0440\u0441\u0438\u044f, \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u043c\u0430\u044f \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u043e\u043c Manim, \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0447\u0430\u0449\u0435 \u0438 \u043f\u0440\u043e\u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0430 \u043b\u0443\u0447\u0448\u0435 \u0432\u0435\u0440\u0441\u0438\u0438 \u0413\u0440\u0430\u043d\u0442\u0430, \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 \u0432\u0435\u0440\u0441\u0438\u0435\u0439 \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u0430. \u0412 <a href=\"https:\/\/docs.manim.community\/en\/stable\/installation.html\">\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438<\/a> \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f, \u043a\u0430\u043a\u0438\u0435 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043f\u0430\u043a\u0435\u0442\u0430 \u043d\u0443\u0436\u043d\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c. \u041f\u043e\u0441\u043b\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0435\u0439 \u0432\u0432\u0435\u0434\u0438\u0442\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u0443:<\/p>\n<p><code>pip install manim<\/code><\/p>\n<h3>\u041f\u0440\u0438\u0441\u0442\u0443\u043f\u0430\u0435\u043c<\/h3>\n<h4>\u0421\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0432\u0430\u044e\u0449\u0438\u0439\u0441\u044f \u0438\u0437 \u0446\u0435\u043d\u0442\u0440\u0430 \u0441\u0438\u043d\u0438\u0439 \u043a\u0432\u0430\u0434\u0440\u0430\u0442<\/h4>\n<p>\u041a\u043e\u0434 \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u0438 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442\u0441\u044f \u0432\u043d\u0443\u0442\u0440\u0438 \u043c\u0435\u0442\u043e\u0434\u0430 construct \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c\u043e\u0433\u043e \u0438\u0437 Scene \u043a\u043b\u0430\u0441\u0441\u0430.<\/p>\n<pre><code class=\"python\">from manim import *   class PointMovingOnShapes(Scene):     def construct(self):         square = Square(color=BLUE) # Create a square         square.flip(RIGHT) # Flip the square to the right         square.rotate(-3 * TAU \/ 8) # Rotate the square -3\/8 * 2*PI            # Play the animation of a square growing from the center         self.play(GrowFromCenter(square))<\/code><\/pre>\n<p>\u0421\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u0435 \u044d\u0442\u043e\u0442 \u0441\u043a\u0440\u0438\u043f\u0442 \u0441 \u0438\u043c\u0435\u043d\u0435\u043c start.py. \u0417\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u0443 \u043d\u0438\u0436\u0435, \u0447\u0442\u043e\u0431\u044b \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432\u0438\u0434\u0435\u043e \u0438\u0437 \u0441\u043a\u0440\u0438\u043f\u0442\u0430.<\/p>\n<pre><code class=\"bash\">manim -p -ql start.py PointMovingOnShapes<\/code><\/pre>\n<p>\u0412\u0438\u0434\u0435\u043e \u0441 \u0438\u043c\u0435\u043d\u0435\u043c PointMovingOnShapes.mp4 \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u043e \u0432 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u043c \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0435. \u0423 \u0432\u0430\u0441 \u0434\u043e\u043b\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c\u0441\u044f \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435:<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/c90\/3c9\/a74\/c903c9a74d1b564b61f2d4ee65b56558.gif\" width=\"854\" height=\"480\"><figcaption><\/figcaption><\/figure>\n<p>\u041f\u043e\u044f\u0441\u043d\u0435\u043d\u0438\u044f \u043a \u043e\u043f\u0446\u0438\u044f\u043c:<\/p>\n<ul>\n<li>\n<p>-p: \u043f\u043e\u0441\u043b\u0435 \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u0432\u0438\u0434\u0435\u043e \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0441\u0442\u0438 \u0435\u0433\u043e \u043e\u0434\u0438\u043d \u0440\u0430\u0437;<\/p>\n<\/li>\n<li>\n<p>-ql: \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432\u0438\u0434\u0435\u043e \u0441 \u043d\u0438\u0437\u043a\u0438\u043c \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u043e\u043c.&nbsp;<\/p>\n<\/li>\n<\/ul>\n<p>\u0414\u043b\u044f \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0432\u0438\u0434\u0435\u043e \u0441 \u0432\u044b\u0441\u043e\u043a\u0438\u043c \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u043e\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043e\u043f\u0446\u0438\u044f -qh. <\/p>\n<p>\u0427\u0442\u043e\u0431\u044b \u0432\u043c\u0435\u0441\u0442\u043e \u0432\u0438\u0434\u0435\u043e \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c GIF-\u0430\u043d\u0438\u043c\u0430\u0446\u0438\u044e, \u0434\u043e\u0431\u0430\u0432\u044c\u0442\u0435 \u043a \u043a\u043e\u043c\u0430\u043d\u0434\u0435 \u043e\u043f\u0446\u0438\u044e -i:<\/p>\n<pre><code class=\"bash\">manim -p -ql -i start.py PointMovingOnShapes<\/code><\/pre>\n<h4>\u041f\u0440\u0435\u0432\u0440\u0430\u0449\u0435\u043d\u0438\u0435 \u043a\u0432\u0430\u0434\u0440\u0430\u0442\u0430 \u0432 \u043a\u0440\u0443\u0433<\/h4>\n<p>\u0421\u043e\u0437\u0434\u0430\u0442\u044c \u043e\u0431\u044b\u0447\u043d\u044b\u0439 \u043a\u0432\u0430\u0434\u0440\u0430\u0442 \u2014 \u0441\u0430\u043c\u0430\u044f \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u0440\u043d\u0430\u044f \u0437\u0430\u0434\u0430\u0447\u0430. \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0435\u0451 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0443\u0441\u043b\u043e\u0436\u043d\u0438\u043c. \u041f\u0440\u0435\u0432\u0440\u0430\u0442\u0438\u043c \u044d\u0442\u043e\u0442 \u043a\u0432\u0430\u0434\u0440\u0430\u0442 \u0432 \u043a\u0440\u0443\u0433.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/1a7\/cca\/937\/1a7cca937bba1a57a8a341f1ff010fb2.gif\" width=\"854\" height=\"480\"><figcaption><\/figcaption><\/figure>\n<p>\u041a\u043e\u0434 \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043f\u0440\u0438\u0432\u0435\u0434\u0451\u043d\u043d\u043e\u0439 \u0432\u044b\u0448\u0435 \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u0438:<\/p>\n<pre><code class=\"python\">from manim import *   class PointMovingOnShapes(Scene):     def construct(self):                  # Create a square         square = Square(color=BLUE)         square.flip(RIGHT)         square.rotate(-3 * TAU \/ 8)                  # Create a circle         circle = Circle()         circle.set_fill(PINK, opacity=0.5) # set the color and transparency                # Create animations         self.play(GrowFromCenter(square))         self.play(Transform(square, circle))  # turn the square into a circle                 self.wait() # wait for some seconds<\/code><\/pre>\n<p>\u041f\u043e\u043b\u043d\u044b\u0439 \u043d\u0430\u0431\u043e\u0440 \u0444\u043e\u0440\u043c \u0444\u0438\u0433\u0443\u0440 \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 <a href=\"https:\/\/docs.manim.community\/en\/stable\/reference\/manim.mobject.geometry.html%23module-manim.mobject.geometry\">\u0437\u0434\u0435\u0441\u044c<\/a>.<\/p>\n<h3>\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 Manim<\/h3>\n<p>\u0424\u043e\u043d \u043c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043d\u0435 \u0447\u0451\u0440\u043d\u044b\u043c, \u0430 \u0441\u0435\u0440\u044b\u043c:<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/7e2\/593\/ee9\/7e2593ee9f13e516fb64414766f6acda.gif\" width=\"1920\" height=\"1080\"><figcaption><\/figcaption><\/figure>\n<p>\u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 config.background_color.<\/p>\n<pre><code class=\"python\">from manim import *   config.background_color = DARK_GRAY<\/code><\/pre>\n<p><a href=\"https:\/\/docs.manim.community\/en\/stable\/tutorials\/configuration.html\">\u0417\u0434\u0435\u0441\u044c<\/a> \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043e \u0434\u0440\u0443\u0433\u0438\u0445 \u0441\u043f\u043e\u0441\u043e\u0431\u0430\u0445 \u043a\u0430\u0441\u0442\u043e\u043c\u0438\u0437\u0430\u0446\u0438\u0438 manim.<\/p>\n<h3>\u0427\u0442\u043e \u0435\u0449\u0451 \u043c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e Manim?<\/h3>\n<h4>\u041f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0443\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0439 \u0441 \u043f\u043e\u0434\u0432\u0438\u0436\u043d\u043e\u0439 \u0440\u0430\u043c\u043a\u043e\u0439<\/h4>\n<p>\u0422\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u0438, \u0432\u044b\u0432\u043e\u0434\u044f\u0449\u0438\u0435 \u043c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0443\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044f \u0441 \u043f\u043e\u0434\u0432\u0438\u0436\u043d\u043e\u0439 \u0440\u0430\u043c\u043a\u043e\u0439, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u0442\u0430\u043a\u0438\u0435:<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/222\/7e9\/837\/2227e9837f7865f967ee104c81531c08.gif\" width=\"854\" height=\"480\"><figcaption><\/figcaption><\/figure>\n<pre><code class=\"python\">class MovingFrame(Scene):      def construct(self):         # Write equations         equation = MathTex(\"2x^2-5x+2\", \"=\", \"(x-2)(2x-1)\")          # Create animation         self.play(Write(equation))          # Add moving frames         framebox1 = SurroundingRectangle(equation[0], buff=.1)         framebox2 = SurroundingRectangle(equation[2], buff=.1)          # Create animations         self.play(Create(framebox1))  # creating the frame          self.wait()         # replace frame 1 with frame 2         self.play(ReplacementTransform(framebox1, framebox2))              self.wait()<\/code><\/pre>\n<p>\u0418\u043b\u0438 \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u0448\u0430\u0433\u0438 \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0443\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044f:<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/cfa\/725\/e9e\/cfa725e9eb984f00e856e0c5989162f8.gif\" width=\"854\" height=\"480\"><figcaption><\/figcaption><\/figure>\n<pre><code class=\"python\">class MathematicalEquation(Scene):     def construct(self):              # Write equations         equation1 = MathTex(\"2x^2-5x+2\")         eq_sign_1 = MathTex(\"=\")         equation2 = MathTex(\"2x^2-4x-x+2\")         eq_sign_2 = MathTex(\"=\")         equation3 = MathTex(\"(x-2)(2x-1)\")          # Put each equation or sign in the appropriate positions         equation1.next_to(eq_sign_1, LEFT)         equation2.next_to(eq_sign_1, RIGHT)                  eq_sign_2.shift(DOWN)         equation3.shift(DOWN)                  # Align bottom equations with the top equations         eq_sign_2.align_to(eq_sign_1, LEFT)         equation3.align_to(equation2, LEFT)          # Group equations and sign         eq_group = VGroup(equation1, eq_sign_1, equation2, eq_sign_2, equation3)          # Create animation         self.play(Write(eq_group))                  self.wait()<\/code><\/pre>\n<h4>\u041f\u0435\u0440\u0435\u043c\u0435\u0449\u0435\u043d\u0438\u0435 \u0438 \u043f\u0430\u043d\u043e\u0440\u0430\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435<\/h4>\n<p>\u0422\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c &#171;\u043a\u0430\u043c\u0435\u0440\u0443&#187; \u043d\u0430 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0435 \u0447\u0430\u0441\u0442\u0438 \u0443\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044f \u0438 \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0432\u0430\u0442\u044c \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u044b \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0442\u0430\u043a\u0438\u0445 \u043c\u0435\u0441\u0442 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u043b\u0430\u0441\u0441\u0430, \u0443\u043d\u0430\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u043e\u0442 \u043e\u0431\u044a\u0435\u043a\u0442\u0430 MovingCameraScene.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/9bd\/24a\/46f\/9bd24a46f2d7c6b22cbe808086325c58.gif\" width=\"1920\" height=\"1080\"><figcaption><\/figcaption><\/figure>\n<pre><code class=\"python\"> class MovingAndZoomingCamera(MovingCameraScene):     def construct(self):         # Write equations         equation = MathTex(\"2x^2-5x+2\", \"=\", \"(x-2)(2x-1)\")          self.add(equation)         self.play(self.camera.frame.animate.move_to(equation[0]).set(width=equation[0].width*2))         self.wait(0.3)         self.play(self.camera.frame.animate.move_to(equation[2]).set(width=equation[2].width*2))<\/code><\/pre>\n<h4>\u041f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u0435 \u0433\u0440\u0430\u0444\u0438\u043a\u043e\u0432<\/h4>\n<p>\u041f\u0430\u043a\u0435\u0442 manim \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0430\u043d\u043d\u043e\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u0433\u0440\u0430\u0444\u0438\u043a\u043e\u0432, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u0442\u0430\u043a\u0438\u0445:<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/d01\/ea1\/c75\/d01ea1c753669e63347fdd8e99099a0b.png\" width=\"1600\" height=\"900\"><figcaption><\/figcaption><\/figure>\n<pre><code class=\"python\">class Graph(GraphScene):     def __init__(self, **kwargs):         GraphScene.__init__(             self,             x_min=-3.5,             x_max=3.5,             y_min=-5,             y_max=5,             graph_origin=ORIGIN,             axes_color=BLUE,             x_labeled_nums=range(-4, 4, 2), # x tickers             y_labeled_nums=range(-5, 5, 2), # y tickers             **kwargs         )          def construct(self):         self.setup_axes(animate=False)          # Draw graphs         func_graph_cube = self.get_graph(lambda x: x**3, RED)         func_graph_ncube = self.get_graph(lambda x: -x**3, GREEN)          # Create labels         graph_lab = self.get_graph_label(func_graph_cube, label=\"x^3\")         graph_lab2 = self.get_graph_label(func_graph_ncube, label=\"-x^3\", x_val=-3)          # Create a vertical line         vert_line = self.get_vertical_line_to_graph(1.5, func_graph_cube, color=YELLOW)         label_coord = self.input_to_graph_point(1.5, func_graph_cube)         text = MathTex(r\"x=1.5\")         text.next_to(label_coord)                 self.add(func_graph_cube, func_graph_ncube, graph_lab, graph_lab2, vert_line, text)         self.wait()<\/code><\/pre>\n<p>\u0415\u0441\u043b\u0438 \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0433\u043e \u043a\u0430\u0434\u0440\u0430 \u0441\u0446\u0435\u043d\u044b, \u0434\u043e\u0431\u0430\u0432\u044c\u0442\u0435 \u043a \u043a\u043e\u043c\u0430\u043d\u0434\u0435 \u043e\u043f\u0446\u0438\u044e -s:<\/p>\n<pre><code class=\"bash\">manim -p -qh -s more.py Graph<\/code><\/pre>\n<p>\u0422\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u043d\u043e \u0430\u043d\u0438\u043c\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043e\u0441\u0435\u0439: \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043d\u0443\u0436\u043d\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 animate=True.<\/p>\n<pre><code class=\"python\"> def construct(self):         self.setup_axes(animate=True)         ################### The below is the same as above ################### <\/code><\/pre>\n<pre><code class=\"bash\">manim -p -qh more.py Graph<\/code><\/pre>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/6fd\/6f4\/ee4\/6fd6f4ee44dcb28fdd191ea2e926c744.gif\" width=\"854\" height=\"480\"><figcaption><\/figcaption><\/figure>\n<h4>\u0421\u043e\u0432\u043c\u0435\u0441\u0442\u043d\u043e\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0435\u043d\u0438\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432<\/h4>\n<p>\u0414\u043b\u044f \u0433\u0440\u0443\u043f\u043f\u0438\u0440\u043e\u0432\u043a\u0438 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 Manim \u0438 \u0438\u0445 \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u043d\u043e\u0433\u043e \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0435\u043d\u0438\u044f \u043c\u043e\u0436\u043d\u043e \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f VGroup:<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/59e\/52e\/357\/59e52e35700335cb061173c6197aacec.gif\" width=\"1920\" height=\"1080\"><figcaption><\/figcaption><\/figure>\n<pre><code class=\"python\">class GroupCircles(Scene):     def construct(self):          # Create circles         circle_green = Circle(color=GREEN)         circle_blue = Circle(color=BLUE)         circle_red = Circle(color=RED)                  # Set initial positions         circle_green.shift(LEFT)         circle_blue.shift(RIGHT)                  # Create 2 different groups         gr = VGroup(circle_green, circle_red)         gr2 = VGroup(circle_blue)         self.add(gr, gr2) # add two groups to the scene         self.wait()          self.play((gr + gr2).animate.shift(DOWN)) # shift 2 groups down                  self.play(gr.animate.shift(RIGHT)) # move only 1 group         self.play(gr.animate.shift(UP))          self.play((gr + gr2).animate.shift(RIGHT)) # shift 2 groups to the right         self.play(circle_red.animate.shift(RIGHT))         self.wait()<\/code><\/pre>\n<h4>\u041e\u0442\u0441\u043b\u0435\u0436\u0438\u0432\u0430\u043d\u0438\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0435\u043d\u0438\u044f<\/h4>\n<p>\u0414\u043b\u044f \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0441\u043b\u0435\u0434\u0430 \u0434\u0432\u0438\u0436\u0443\u0449\u0435\u0433\u043e\u0441\u044f \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u043c\u043e\u0436\u043d\u043e \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f TracedPath:<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/53a\/4f0\/15c\/53a4f015c1cac24a41be5d89019167f7.gif\" width=\"1920\" height=\"1080\"><figcaption><\/figcaption><\/figure>\n<pre><code class=\"python\"> class TracedPathExample(Scene):     def construct(self):         # Create circle and dot         circ = Circle(color=BLUE).shift(4*LEFT)         dot = Dot(color=BLUE).move_to(circ.get_start())          # Group dot and circle         rolling_circle = VGroup(circ, dot)         trace = TracedPath(circ.get_start)          rolling_circle.add_updater(lambda m: m.rotate(-0.3))  # Rotate the circle          self.add(trace, rolling_circle) # add trace and rolling circle to the scene          # Shift the circle to 8*RIGHT         self.play(rolling_circle.animate.shift(8*RIGHT), run_time=4, rate_func=linear) <\/code><\/pre>\n<h2>\u041f\u043e\u0434\u0432\u043e\u0434\u044f \u0438\u0442\u043e\u0433<\/h2>\n<p>\u041f\u0430\u043a\u0435\u0442 manim \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0441 \u0442\u0440\u0435\u043c\u044f \u0432\u0438\u0434\u0430\u043c\u0438 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432:<\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/docs.manim.community\/en\/stable\/reference.html%23mobjects\">Mobjects<\/a>: \u043e\u0431\u044a\u0435\u043a\u0442\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0433\u0443\u0442 \u0432\u044b\u0432\u043e\u0434\u0438\u0442\u044c\u0441\u044f \u043d\u0430 \u044d\u043a\u0440\u0430\u043d, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 Circle (\u041e\u043a\u0440\u0443\u0436\u043d\u043e\u0441\u0442\u044c), Square (\u041a\u0432\u0430\u0434\u0440\u0430\u0442), Matrix (\u041c\u0430\u0442\u0440\u0438\u0446\u0430), Angle (\u0423\u0433\u043e\u043b) \u0438 \u043f\u0440.<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/docs.manim.community\/en\/stable\/reference.html%23scenes\">\u0421\u0446\u0435\u043d\u044b<\/a>: &#171;\u0445\u043e\u043b\u0441\u0442\u044b&#187; \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u0439, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 Scene, MovingCameraScene \u0438 \u043f\u0440.<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/docs.manim.community\/en\/stable\/reference.html%23animations\">\u0410\u043d\u0438\u043c\u0430\u0446\u0438\u0438<\/a>: \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u0438, \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u043c\u044b\u0435 \u043a \u043e\u0431\u044a\u0435\u043a\u0442\u0430\u043c Mobjects, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 Write (\u0417\u0430\u043f\u0438\u0441\u0430\u0442\u044c), Create (\u0421\u043e\u0437\u0434\u0430\u0442\u044c), GrowFromCenter (\u0423\u0432\u0435\u043b\u0438\u0447\u0438\u0442\u044c \u043e\u0442 \u0446\u0435\u043d\u0442\u0440\u0430), Transform (\u041f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u0442\u044c) \u0438 \u043f\u0440.<\/p>\n<\/li>\n<\/ul>\n<p>\u041f\u0430\u043a\u0435\u0442 manim \u0438\u043c\u0435\u0435\u0442 \u0438 \u0434\u0440\u0443\u0433\u0443\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c, \u043d\u043e \u044d\u0442\u043e \u0442\u0435\u043c\u0430 \u0434\u043b\u044f \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438. \u0423\u0447\u0438\u0442\u044c\u0441\u044f \u043b\u0443\u0447\u0448\u0435 \u0432\u0441\u0435\u0433\u043e \u043d\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0435, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u044f \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u044e \u043f\u043e\u043f\u0440\u0430\u043a\u0442\u0438\u043a\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u043f\u0440\u0438\u043c\u0435\u0440\u0430\u0445 \u0438\u0437 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442\u044c\u0441\u044f \u0441 <a href=\"https:\/\/docs.manim.community\/en\/stable\/tutorials.html\">\u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u043e\u043c <\/a>\u043f\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044e manim. \u0418\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u043a\u043e\u0434 \u0438\u0437 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438 \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 <a href=\"https:\/\/github.com\/khuyentran1401\/Data-science\/tree\/master\/visualization\/manim_exp\">\u0437\u0434\u0435\u0441\u044c<\/a>.<\/p>\n<p>\u041f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 manim \u043a\u0440\u0430\u0441\u043e\u0442\u0430 \u043c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u043a\u0438 \u043f\u0440\u0438\u043e\u0431\u0440\u0435\u0442\u0430\u0435\u0442 \u0432\u0435\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0435 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0435. \u0415\u0441\u043b\u0438 \u0445\u043e\u0447\u0435\u0442\u0441\u044f \u043f\u043e\u0434\u0442\u044f\u043d\u0443\u0442\u044c \u043c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u043a\u0443  \u2014 \u043c\u043e\u0436\u0435\u0442\u0435 \u043e\u0431\u0440\u0430\u0442\u0438\u0442\u044c \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043d\u0430 \u043a\u0443\u0440\u0441 \u043e <a href=\"https:\/\/skillfactory.ru\/math-stat-for-ds#syllabus?utm_source=infopartners&amp;utm_medium=habr&amp;utm_campaign=habr_MAT&amp;utm_term=regular&amp;utm_content=140521\">\u043c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u043a\u0435 \u0434\u043b\u044f Data Science<\/a>. \u041d\u0430 \u043d\u0451\u043c \u043c\u044b \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0435\u043c \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u043c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0438 \u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0437\u0430\u043a\u043e\u043d\u043e\u043c\u0435\u0440\u043d\u043e\u0441\u0442\u0435\u0439 \u0432 \u043c\u0430\u0448\u0438\u043d\u043d\u043e\u043c \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u0438 \u0438 \u043d\u0435\u0439\u0440\u043e\u043d\u043d\u044b\u0445 \u0441\u0435\u0442\u044f\u0445, \u0447\u0442\u043e\u0431\u044b \u0432\u044b \u0432 \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u043c \u043c\u043e\u0433\u043b\u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0441 \u0442\u0438\u043f\u043e\u0432\u044b\u043c\u0438 \u043c\u043e\u0434\u0435\u043b\u044f\u043c\u0438 \u0438 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430\u043c\u0438.<\/p>\n<figure class=\"\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/612\/76e\/9f0\/61276e9f0de32a031593e76d4d13fd18.png\" width=\"1000\" height=\"200\"><figcaption><\/figcaption><\/figure>\n<p><a href=\"https:\/\/skillfactory.ru\/courses\/?utm_source=infopartners&amp;utm_medium=habr&amp;utm_campaign=habr_ALLCOURSES&amp;utm_term=regular&amp;utm_content=140521\">\u0423\u0437\u043d\u0430\u0439\u0442\u0435<\/a>, \u043a\u0430\u043a \u043f\u0440\u043e\u043a\u0430\u0447\u0430\u0442\u044c\u0441\u044f \u0438 \u0432 \u0434\u0440\u0443\u0433\u0438\u0445 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044f\u0445 \u0438\u043b\u0438 \u043e\u0441\u0432\u043e\u0438\u0442\u044c \u0438\u0445 \u0441 \u043d\u0443\u043b\u044f:<\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/skillfactory.ru\/dstpro?utm_source=infopartners&amp;utm_medium=habr&amp;utm_campaign=habr_DSPR&amp;utm_term=regular&amp;utm_content=140521\">\u041f\u0440\u043e\u0444\u0435\u0441\u0441\u0438\u044f Data Scientist<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/skillfactory.ru\/dataanalystpro?utm_source=infopartners&amp;utm_medium=habr&amp;utm_campaign=habr_DAPR&amp;utm_term=regular&amp;utm_content=140521\">\u041f\u0440\u043e\u0444\u0435\u0441\u0441\u0438\u044f Data Analyst<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/skillfactory.ru\/dataengineer?utm_source=infopartners&amp;utm_medium=habr&amp;utm_campaign=habr_DEA&amp;utm_term=regular&amp;utm_content=140521\">\u041a\u0443\u0440\u0441 \u043f\u043e Data Engineering<\/a><\/p>\n<\/li>\n<\/ul>\n<details class=\"spoiler\">\n<summary>\u0414\u0440\u0443\u0433\u0438\u0435 \u043f\u0440\u043e\u0444\u0435\u0441\u0441\u0438\u0438 \u0438 \u043a\u0443\u0440\u0441\u044b<\/summary>\n<div class=\"spoiler__content\">\n<p><strong>\u041f\u0420\u041e\u0424\u0415\u0421\u0421\u0418\u0418<\/strong><\/p>\n<ul>\n<li>\n<p>  <a href=\"https:\/\/skillfactory.ru\/python-fullstack-web-developer?utm_source=infopartners&amp;utm_medium=habr&amp;utm_campaign=habr_FPW&amp;utm_term=regular&amp;utm_content=140521\">\u041f\u0440\u043e\u0444\u0435\u0441\u0441\u0438\u044f Fullstack-\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u043d\u0430 Python<\/a><\/p>\n<\/li>\n<li>\n<p>  <a href=\"https:\/\/skillfactory.ru\/java?utm_source=infopartners&amp;utm_medium=habr&amp;utm_campaign=habr_JAVA&amp;utm_term=regular&amp;utm_content=140521\">\u041f\u0440\u043e\u0444\u0435\u0441\u0441\u0438\u044f Java-\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a<\/a><\/p>\n<\/li>\n<li>\n<p>  <a href=\"https:\/\/skillfactory.ru\/java-qa-engineer?utm_source=infopartners&amp;utm_medium=habr&amp;utm_campaign=habr_QAJA&amp;utm_term=regular&amp;utm_content=140521\">\u041f\u0440\u043e\u0444\u0435\u0441\u0441\u0438\u044f QA-\u0438\u043d\u0436\u0435\u043d\u0435\u0440 \u043d\u0430 JAVA<\/a><\/p>\n<\/li>\n<li>\n<p>  <a href=\"https:\/\/skillfactory.ru\/frontend?utm_source=infopartners&amp;utm_medium=habr&amp;utm_campaign=habr_FR&amp;utm_term=regular&amp;utm_content=140521\">\u041f\u0440\u043e\u0444\u0435\u0441\u0441\u0438\u044f Frontend-\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a<\/a><\/p>\n<\/li>\n<li>\n<p>  <a href=\"https:\/\/skillfactory.ru\/cybersecurity?utm_source=infopartners&amp;utm_medium=habr&amp;utm_campaign=habr_HACKER&amp;utm_term=regular&amp;utm_content=140521\">\u041f\u0440\u043e\u0444\u0435\u0441\u0441\u0438\u044f \u042d\u0442\u0438\u0447\u043d\u044b\u0439 \u0445\u0430\u043a\u0435\u0440<\/a><\/p>\n<\/li>\n<li>\n<p>  <a href=\"https:\/\/skillfactory.ru\/cplus?utm_source=infopartners&amp;utm_medium=habr&amp;utm_campaign=habr_CPLUS&amp;utm_term=regular&amp;utm_content=140521\">\u041f\u0440\u043e\u0444\u0435\u0441\u0441\u0438\u044f C++ \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a<\/a><\/p>\n<\/li>\n<li>\n<p>  <a href=\"https:\/\/skillfactory.ru\/game-dev?utm_source=infopartners&amp;utm_medium=habr&amp;utm_campaign=habr_GAMEDEV&amp;utm_term=regular&amp;utm_content=140521\">\u041f\u0440\u043e\u0444\u0435\u0441\u0441\u0438\u044f \u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u0438\u0433\u0440 \u043d\u0430 Unity<\/a><\/p>\n<\/li>\n<li>\n<p>  <a href=\"https:\/\/skillfactory.ru\/webdev?utm_source=infopartners&amp;utm_medium=habr&amp;utm_campaign=habr_WEBDEV&amp;utm_term=regular&amp;utm_content=140521\">\u041f\u0440\u043e\u0444\u0435\u0441\u0441\u0438\u044f \u0412\u0435\u0431-\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a<\/a><\/p>\n<\/li>\n<li>\n<p>  <a href=\"https:\/\/skillfactory.ru\/iosdev?utm_source=infopartners&amp;utm_medium=habr&amp;utm_campaign=habr_IOSDEV&amp;utm_term=regular&amp;utm_content=140521\">\u041f\u0440\u043e\u0444\u0435\u0441\u0441\u0438\u044f iOS-\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u0441 \u043d\u0443\u043b\u044f<\/a><\/p>\n<\/li>\n<li>\n<p>  <a href=\"https:\/\/skillfactory.ru\/android?utm_source=infopartners&amp;utm_medium=habr&amp;utm_campaign=habr_ANDR&amp;utm_term=regular&amp;utm_content=140521\">\u041f\u0440\u043e\u0444\u0435\u0441\u0441\u0438\u044f Android-\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u0441 \u043d\u0443\u043b\u044f<\/a><\/p>\n<\/li>\n<\/ul>\n<p><strong>\u041a\u0423\u0420\u0421\u042b<\/strong><\/p>\n<ul>\n<li>\n<p>  <a href=\"https:\/\/skillfactory.ru\/ml-programma-machine-learning-online?utm_source=infopartners&amp;utm_medium=habr&amp;utm_campaign=habr_ML&amp;utm_term=regular&amp;utm_content=140521\">\u041a\u0443\u0440\u0441 \u043f\u043e Machine Learning<\/a><\/p>\n<\/li>\n<li>\n<p>  <a href=\"https:\/\/skillfactory.ru\/ml-and-dl?utm_source=infopartners&amp;utm_medium=habr&amp;utm_campaign=habr_MLDL&amp;utm_term=regular&amp;utm_content=140521\">\u041a\u0443\u0440\u0441 &#171;Machine Learning \u0438 Deep Learning&#187;<\/a><\/p>\n<\/li>\n<li>\n<p>  <a href=\"https:\/\/skillfactory.ru\/math-stat-for-ds#syllabus?utm_source=infopartners&amp;utm_medium=habr&amp;utm_campaign=habr_MAT&amp;utm_term=regular&amp;utm_content=140521\">\u041a\u0443\u0440\u0441 &#171;\u041c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u043a\u0430 \u0434\u043b\u044f Data Science&#187;<\/a><\/p>\n<\/li>\n<li>\n<p>  <a href=\"https:\/\/skillfactory.ru\/math_and_ml?utm_source=infopartners&amp;utm_medium=habr&amp;utm_campaign=habr_MATML&amp;utm_term=regular&amp;utm_content=140521\">\u041a\u0443\u0440\u0441 &#171;\u041c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u043a\u0430 \u0438 Machine Learning \u0434\u043b\u044f Data Science&#187;<\/a><a href=\"https:\/\/skillfactory.ru\/math_and_ml?utm_source=infopartners&amp;utm_medium=habr&amp;utm_campaign=habr_MATML&amp;utm_term=regular&amp;utm_content=140421\">&nbsp;<\/a><\/p>\n<\/li>\n<li>\n<p>  <a href=\"https:\/\/skillfactory.ru\/python-for-web-developers?utm_source=infopartners&amp;utm_medium=habr&amp;utm_campaign=habr_PWS&amp;utm_term=regular&amp;utm_content=140521\">\u041a\u0443\u0440\u0441 &#171;Python \u0434\u043b\u044f \u0432\u0435\u0431-\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438&#187;<\/a><\/p>\n<\/li>\n<li>\n<p>  <a href=\"https:\/\/skillfactory.ru\/algo?utm_source=infopartners&amp;utm_medium=habr&amp;utm_campaign=habr_algo&amp;utm_term=regular&amp;utm_content=140521\">\u041a\u0443\u0440\u0441 &#171;\u0410\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u044b \u0438 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u0434\u0430\u043d\u043d\u044b\u0445&#187;<\/a><\/p>\n<\/li>\n<li>\n<p>  <a href=\"https:\/\/skillfactory.ru\/analytics?utm_source=infopartners&amp;utm_medium=habr&amp;utm_campaign=habr_SDA&amp;utm_term=regular&amp;utm_content=140521\">\u041a\u0443\u0440\u0441 \u043f\u043e \u0430\u043d\u0430\u043b\u0438\u0442\u0438\u043a\u0435 \u0434\u0430\u043d\u043d\u044b\u0445<\/a><\/p>\n<\/li>\n<li>\n<p>  <a href=\"https:\/\/skillfactory.ru\/devops?utm_source=infopartners&amp;utm_medium=habr&amp;utm_campaign=habr_DEVOPS&amp;utm_term=regular&amp;utm_content=140521\">\u041a\u0443\u0440\u0441 \u043f\u043e DevOps<\/a><\/p>\n<\/li>\n<\/ul>\n<\/div>\n<\/details>\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\/company\/skillfactory\/blog\/556944\/\"> https:\/\/habr.com\/ru\/company\/skillfactory\/blog\/556944\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"\n<div class=\"post__text post__text_v2\" id=\"post-content-body\">\n<figure class=\"full-width\"><figcaption><\/figcaption><\/figure>\n<p>\u0412\u044b \u043d\u0430\u0432\u0435\u0440\u043d\u044f\u043a\u0430 \u043a\u043e\u0433\u0434\u0430-\u0442\u043e \u0438\u0441\u043f\u044b\u0442\u044b\u0432\u0430\u043b\u0438 \u0442\u0440\u0443\u0434\u043d\u043e\u0441\u0442\u0438 \u0432 \u043f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u0438 \u043c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u043a\u043e\u043d\u0446\u0435\u043f\u0446\u0438\u0439 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u043e\u0432 \u043c\u0430\u0448\u0438\u043d\u043d\u043e\u0433\u043e \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f \u0438 \u0434\u043b\u044f \u043b\u0443\u0447\u0448\u0435\u0433\u043e \u043f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u044f \u0442\u0435\u043c\u044b \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0438\u0441\u044c \u043e\u0431\u0443\u0447\u0430\u044e\u0449\u0438\u043c \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u043c 3Blue1Brown. 3Blue1Brown \u2014 \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b\u0439 \u043c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 YouTube-\u043a\u0430\u043d\u0430\u043b, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u0435\u0434\u0451\u0442 \u0413\u0440\u0430\u043d\u0442 \u0421\u0430\u043d\u0434\u0435\u0440\u0441\u043e\u043d. \u041c\u043d\u043e\u0433\u0438\u043c \u043d\u0440\u0430\u0432\u0438\u0442\u0441\u044f 3Blue1Brown \u0437\u0430 \u043f\u0440\u0435\u043a\u0440\u0430\u0441\u043d\u044b\u0435 \u043e\u0431\u044a\u044f\u0441\u043d\u0435\u043d\u0438\u044f \u0413\u0440\u0430\u043d\u0442\u0430 \u0438 \u0432\u0435\u043b\u0438\u043a\u043e\u043b\u0435\u043f\u043d\u044b\u0435 \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u0438.<\/p>\n<p>21 \u043c\u0430\u044f \u0441\u0442\u0430\u0440\u0442\u0443\u0435\u0442 \u043d\u043e\u0432\u044b\u0439 \u043f\u043e\u0442\u043e\u043a \u043a\u0443\u0440\u0441\u0430 \u043e <a href=\"https:\/\/skillfactory.ru\/math-stat-for-ds#syllabus?utm_source=infopartners&amp;utm_medium=habr&amp;utm_campaign=habr_MAT&amp;utm_term=regular&amp;utm_content=140521\">\u043c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u043a\u0435 \u0434\u043b\u044f Data Science<\/a>. \u0421\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u043a \u0435\u0433\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0443 \u043c\u044b \u0434\u0435\u043b\u0438\u043c\u0441\u044f \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u043e\u043c, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0430\u0432\u0442\u043e\u0440 \u0440\u0435\u0448\u0438\u043b \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u0442\u044c, \u043a\u0430\u043a \u0434\u0435\u043b\u0430\u0442\u044c \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u0438, \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u0435 \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u044f\u043c \u043d\u0430 \u043a\u0430\u043d\u0430\u043b\u0435 3Blue1Brown, \u0447\u0442\u043e\u0431\u044b \u0432\u044b \u043c\u043e\u0433\u043b\u0438 \u0438\u043b\u043b\u044e\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u0432\u043e\u0438 \u0438\u0434\u0435\u0438 \u0438 \u0440\u0430\u0441\u0441\u0443\u0436\u0434\u0435\u043d\u0438\u044f \u043e \u043c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u043a\u0435 \u0438 \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e.<\/p>\n<hr>\n<p><iframe id=\"609d574a182877b5cb65a686\" src=\"https:\/\/embedd.srv.habr.com\/iframe\/609d574a182877b5cb65a686\" class=\"embed_video embed__content\" allowfullscreen=\"true\"><\/iframe><\/p>\n<p>\u042f \u0440\u0435\u0448\u0438\u043b \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u0442\u044c \u043e \u0442\u0430\u043a\u0438\u0445 \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u044f\u0445, \u0447\u0442\u043e\u0431\u044b \u0432\u044b \u0441\u0430\u043c\u0438 \u043c\u043e\u0433\u043b\u0438 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u0447\u0442\u043e-\u0442\u043e \u043f\u043e\u0434\u043e\u0431\u043d\u043e\u0435 \u0438 \u043e\u0431\u044a\u044f\u0441\u043d\u044f\u0442\u044c \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0435 \u043d\u0430\u0443\u0447\u043d\u044b\u0435 \u0440\u0430\u0441\u0441\u0443\u0436\u0434\u0435\u043d\u0438\u044f \u0441\u0432\u043e\u0438\u043c \u0442\u043e\u0432\u0430\u0440\u0438\u0449\u0430\u043c, \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440\u0430\u043c \u0438\u043b\u0438 \u043f\u0440\u043e\u0441\u0442\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0443\u044e\u0449\u0438\u043c\u0441\u044f \u043b\u044e\u0434\u044f\u043c.<\/p>\n<p>\u041a \u0441\u0447\u0430\u0441\u0442\u044c\u044e, \u0413\u0440\u0430\u043d\u0442 \u0441\u043e\u0437\u0434\u0430\u043b \u043f\u0430\u043a\u0435\u0442 manim \u043d\u0430 Python, \u044d\u0442\u043e\u0442 \u043f\u0430\u043a\u0435\u0442 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u043c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u0438, \u0438\u043b\u0438 &#171;\u0436\u0438\u0432\u044b\u0435&#187; \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0438. \u0418\u0437 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438 \u0432\u044b \u0443\u0437\u043d\u0430\u0435\u0442\u0435, \u043a\u0430\u043a \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043f\u0430\u043a\u0435\u0442\u0430 manim \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u043c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u0438, \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u0435 \u043f\u0440\u0438\u0432\u0435\u0434\u0451\u043d\u043d\u044b\u043c \u043d\u0438\u0436\u0435.<\/p>\n<figure class=\"full-width\"><figcaption><\/figcaption><\/figure>\n<h2>\u0427\u0442\u043e \u0442\u0430\u043a\u043e\u0435 Manim?<\/h2>\n<p>Manim \u2014 \u044d\u0442\u043e \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u043e \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0442\u043e\u0447\u043d\u044b\u0445 \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u0439, \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043f\u043e\u044f\u0441\u043d\u044f\u044e\u0442\u0441\u044f \u0440\u0430\u0437\u043d\u044b\u0435 \u043c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438. \u0421\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0442 \u0434\u0432\u0435 \u0432\u0435\u0440\u0441\u0438\u0438 manim. \u041e\u0434\u043d\u0430 \u0431\u044b\u043b\u0430 <a href=\"https:\/\/github.com\/3b1b\/manim\">\u0441\u043e\u0437\u0434\u0430\u043d\u0430 \u0413\u0440\u0430\u043d\u0442\u043e\u043c<\/a>, \u0430 \u0434\u0440\u0443\u0433\u0430\u044f <a href=\"https:\/\/github.com\/ManimCommunity\/manim\">\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u0430 \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u043e\u043c Manim<\/a>. <\/p>\n<p>\u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0432\u0435\u0440\u0441\u0438\u044f, \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u043c\u0430\u044f \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u043e\u043c Manim, \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0447\u0430\u0449\u0435 \u0438 \u043f\u0440\u043e\u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0430 \u043b\u0443\u0447\u0448\u0435 \u0432\u0435\u0440\u0441\u0438\u0438 \u0413\u0440\u0430\u043d\u0442\u0430, \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 \u0432\u0435\u0440\u0441\u0438\u0435\u0439 \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u0430. \u0412 <a href=\"https:\/\/docs.manim.community\/en\/stable\/installation.html\">\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438<\/a> \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f, \u043a\u0430\u043a\u0438\u0435 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043f\u0430\u043a\u0435\u0442\u0430 \u043d\u0443\u0436\u043d\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c. \u041f\u043e\u0441\u043b\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0435\u0439 \u0432\u0432\u0435\u0434\u0438\u0442\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u0443:<\/p>\n<p><code>pip install manim<\/code><\/p>\n<h3>\u041f\u0440\u0438\u0441\u0442\u0443\u043f\u0430\u0435\u043c<\/h3>\n<h4>\u0421\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0432\u0430\u044e\u0449\u0438\u0439\u0441\u044f \u0438\u0437 \u0446\u0435\u043d\u0442\u0440\u0430 \u0441\u0438\u043d\u0438\u0439 \u043a\u0432\u0430\u0434\u0440\u0430\u0442<\/h4>\n<p>\u041a\u043e\u0434 \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u0438 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442\u0441\u044f \u0432\u043d\u0443\u0442\u0440\u0438 \u043c\u0435\u0442\u043e\u0434\u0430 construct \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c\u043e\u0433\u043e \u0438\u0437 Scene \u043a\u043b\u0430\u0441\u0441\u0430.<\/p>\n<pre><code class=\"python\">from manim import *   class PointMovingOnShapes(Scene):     def construct(self):         square = Square(color=BLUE) # Create a square         square.flip(RIGHT) # Flip the square to the right         square.rotate(-3 * TAU \/ 8) # Rotate the square -3\/8 * 2*PI            # Play the animation of a square growing from the center         self.play(GrowFromCenter(square))<\/code><\/pre>\n<p>\u0421\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u0435 \u044d\u0442\u043e\u0442 \u0441\u043a\u0440\u0438\u043f\u0442 \u0441 \u0438\u043c\u0435\u043d\u0435\u043c start.py. \u0417\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u0443 \u043d\u0438\u0436\u0435, \u0447\u0442\u043e\u0431\u044b \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432\u0438\u0434\u0435\u043e \u0438\u0437 \u0441\u043a\u0440\u0438\u043f\u0442\u0430.<\/p>\n<pre><code class=\"bash\">manim -p -ql start.py PointMovingOnShapes<\/code><\/pre>\n<p>\u0412\u0438\u0434\u0435\u043e \u0441 \u0438\u043c\u0435\u043d\u0435\u043c PointMovingOnShapes.mp4 \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u043e \u0432 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u043c \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0435. \u0423 \u0432\u0430\u0441 \u0434\u043e\u043b\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c\u0441\u044f \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435:<\/p>\n<figure class=\"full-width\"><figcaption><\/figcaption><\/figure>\n<p>\u041f\u043e\u044f\u0441\u043d\u0435\u043d\u0438\u044f \u043a \u043e\u043f\u0446\u0438\u044f\u043c:<\/p>\n<ul>\n<li>\n<p>-p: \u043f\u043e\u0441\u043b\u0435 \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u0432\u0438\u0434\u0435\u043e \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0441\u0442\u0438 \u0435\u0433\u043e \u043e\u0434\u0438\u043d \u0440\u0430\u0437;<\/p>\n<\/li>\n<li>\n<p>-ql: \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432\u0438\u0434\u0435\u043e \u0441 \u043d\u0438\u0437\u043a\u0438\u043c \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u043e\u043c.&nbsp;<\/p>\n<\/li>\n<\/ul>\n<p>\u0414\u043b\u044f \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0432\u0438\u0434\u0435\u043e \u0441 \u0432\u044b\u0441\u043e\u043a\u0438\u043c \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u043e\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043e\u043f\u0446\u0438\u044f -qh. <\/p>\n<p>\u0427\u0442\u043e\u0431\u044b \u0432\u043c\u0435\u0441\u0442\u043e \u0432\u0438\u0434\u0435\u043e \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c GIF-\u0430\u043d\u0438\u043c\u0430\u0446\u0438\u044e, \u0434\u043e\u0431\u0430\u0432\u044c\u0442\u0435 \u043a \u043a\u043e\u043c\u0430\u043d\u0434\u0435 \u043e\u043f\u0446\u0438\u044e -i:<\/p>\n<pre><code class=\"bash\">manim -p -ql -i start.py PointMovingOnShapes<\/code><\/pre>\n<h4>\u041f\u0440\u0435\u0432\u0440\u0430\u0449\u0435\u043d\u0438\u0435 \u043a\u0432\u0430\u0434\u0440\u0430\u0442\u0430 \u0432 \u043a\u0440\u0443\u0433<\/h4>\n<p>\u0421\u043e\u0437\u0434\u0430\u0442\u044c \u043e\u0431\u044b\u0447\u043d\u044b\u0439 \u043a\u0432\u0430\u0434\u0440\u0430\u0442 \u2014 \u0441\u0430\u043c\u0430\u044f \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u0440\u043d\u0430\u044f \u0437\u0430\u0434\u0430\u0447\u0430. \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0435\u0451 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0443\u0441\u043b\u043e\u0436\u043d\u0438\u043c. \u041f\u0440\u0435\u0432\u0440\u0430\u0442\u0438\u043c \u044d\u0442\u043e\u0442 \u043a\u0432\u0430\u0434\u0440\u0430\u0442 \u0432 \u043a\u0440\u0443\u0433.<\/p>\n<figure class=\"full-width\"><figcaption><\/figcaption><\/figure>\n<p>\u041a\u043e\u0434 \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043f\u0440\u0438\u0432\u0435\u0434\u0451\u043d\u043d\u043e\u0439 \u0432\u044b\u0448\u0435 \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u0438:<\/p>\n<pre><code class=\"python\">from manim import *   class PointMovingOnShapes(Scene):     def construct(self):                  # Create a square         square = Square(color=BLUE)         square.flip(RIGHT)         square.rotate(-3 * TAU \/ 8)                  # Create a circle         circle = Circle()         circle.set_fill(PINK, opacity=0.5) # set the color and transparency                # Create animations         self.play(GrowFromCenter(square))         self.play(Transform(square, circle))  # turn the square into a circle                 self.wait() # wait for some seconds<\/code><\/pre>\n<p>\u041f\u043e\u043b\u043d\u044b\u0439 \u043d\u0430\u0431\u043e\u0440 \u0444\u043e\u0440\u043c \u0444\u0438\u0433\u0443\u0440 \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 <a href=\"https:\/\/docs.manim.community\/en\/stable\/reference\/manim.mobject.geometry.html%23module-manim.mobject.geometry\">\u0437\u0434\u0435\u0441\u044c<\/a>.<\/p>\n<h3>\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 Manim<\/h3>\n<p>\u0424\u043e\u043d \u043c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043d\u0435 \u0447\u0451\u0440\u043d\u044b\u043c, \u0430 \u0441\u0435\u0440\u044b\u043c:<\/p>\n<figure class=\"full-width\"><figcaption><\/figcaption><\/figure>\n<p>\u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 config.background_color.<\/p>\n<pre><code class=\"python\">from manim import *   config.background_color = DARK_GRAY<\/code><\/pre>\n<p><a href=\"https:\/\/docs.manim.community\/en\/stable\/tutorials\/configuration.html\">\u0417\u0434\u0435\u0441\u044c<\/a> \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043e \u0434\u0440\u0443\u0433\u0438\u0445 \u0441\u043f\u043e\u0441\u043e\u0431\u0430\u0445 \u043a\u0430\u0441\u0442\u043e\u043c\u0438\u0437\u0430\u0446\u0438\u0438 manim.<\/p>\n<h3>\u0427\u0442\u043e \u0435\u0449\u0451 \u043c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e Manim?<\/h3>\n<h4>\u041f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0443\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0439 \u0441 \u043f\u043e\u0434\u0432\u0438\u0436\u043d\u043e\u0439 \u0440\u0430\u043c\u043a\u043e\u0439<\/h4>\n<p>\u0422\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u0438, \u0432\u044b\u0432\u043e\u0434\u044f\u0449\u0438\u0435 \u043c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0443\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044f \u0441 \u043f\u043e\u0434\u0432\u0438\u0436\u043d\u043e\u0439 \u0440\u0430\u043c\u043a\u043e\u0439, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u0442\u0430\u043a\u0438\u0435:<\/p>\n<figure class=\"full-width\"><figcaption><\/figcaption><\/figure>\n<pre><code class=\"python\">class MovingFrame(Scene):      def construct(self):         # Write equations         equation = MathTex(\"2x^2-5x+2\", \"=\", \"(x-2)(2x-1)\")          # Create animation         self.play(Write(equation))          # Add moving frames         framebox1 = SurroundingRectangle(equation[0], buff=.1)         framebox2 = SurroundingRectangle(equation[2], buff=.1)          # Create animations         self.play(Create(framebox1))  # creating the frame          self.wait()         # replace frame 1 with frame 2         self.play(ReplacementTransform(framebox1, framebox2))              self.wait()<\/code><\/pre>\n<p>\u0418\u043b\u0438 \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u0448\u0430\u0433\u0438 \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0443\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044f:<\/p>\n<figure class=\"full-width\"><figcaption><\/figcaption><\/figure>\n<pre><code class=\"python\">class MathematicalEquation(Scene):     def construct(self):              # Write equations         equation1 = MathTex(\"2x^2-5x+2\")         eq_sign_1 = MathTex(\"=\")         equation2 = MathTex(\"2x^2-4x-x+2\")         eq_sign_2 = MathTex(\"=\")         equation3 = MathTex(\"(x-2)(2x-1)\")          # Put each equation or sign in the appropriate positions         equation1.next_to(eq_sign_1, LEFT)         equation2.next_to(eq_sign_1, RIGHT)                  eq_sign_2.shift(DOWN)         equation3.shift(DOWN)                  # Align bottom equations with the top equations         eq_sign_2.align_to(eq_sign_1, LEFT)         equation3.align_to(equation2, LEFT)          # Group equations and sign         eq_group = VGroup(equation1, eq_sign_1, equation2, eq_sign_2, equation3)          # Create animation         self.play(Write(eq_group))                  self.wait()<\/code><\/pre>\n<h4>\u041f\u0435\u0440\u0435\u043c\u0435\u0449\u0435\u043d\u0438\u0435 \u0438 \u043f\u0430\u043d\u043e\u0440\u0430\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435<\/h4>\n<p>\u0422\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c &#171;\u043a\u0430\u043c\u0435\u0440\u0443&#187; \u043d\u0430 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0435 \u0447\u0430\u0441\u0442\u0438 \u0443\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044f \u0438 \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0432\u0430\u0442\u044c \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u044b \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0442\u0430\u043a\u0438\u0445 \u043c\u0435\u0441\u0442 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u043b\u0430\u0441\u0441\u0430, \u0443\u043d\u0430\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u043e\u0442 \u043e\u0431\u044a\u0435\u043a\u0442\u0430 MovingCameraScene.<\/p>\n<figure class=\"full-width\"><figcaption><\/figcaption><\/figure>\n<pre><code class=\"python\"> class MovingAndZoomingCamera(MovingCameraScene):     def construct(self):         # Write equations         equation = MathTex(\"2x^2-5x+2\", \"=\", \"(x-2)(2x-1)\")          self.add(equation)         self.play(self.camera.frame.animate.move_to(equation[0]).set(width=equation[0].width*2))         self.wait(0.3)         self.play(self.camera.frame.animate.move_to(equation[2]).set(width=equation[2].width*2))<\/code><\/pre>\n<h4>\u041f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u0435 \u0433\u0440\u0430\u0444\u0438\u043a\u043e\u0432<\/h4>\n<p>\u041f\u0430\u043a\u0435\u0442 manim \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0430\u043d\u043d\u043e\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u0433\u0440\u0430\u0444\u0438\u043a\u043e\u0432, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u0442\u0430\u043a\u0438\u0445:<\/p>\n<figure class=\"full-width\"><figcaption><\/figcaption><\/figure>\n<pre><code class=\"python\">class Graph(GraphScene):     def __init__(self, **kwargs):         GraphScene.__init__(             self,             x_min=-3.5,             x_max=3.5,             y_min=-5,             y_max=5,             graph_origin=ORIGIN,             axes_color=BLUE,             x_labeled_nums=range(-4, 4, 2), # x tickers             y_labeled_nums=range(-5, 5, 2), # y tickers             **kwargs         )          def construct(self):         self.setup_axes(animate=False)          # Draw graphs         func_graph_cube = self.get_graph(lambda x: x**3, RED)         func_graph_ncube = self.get_graph(lambda x: -x**3, GREEN)          # Create labels         graph_lab = self.get_graph_label(func_graph_cube, label=\"x^3\")         graph_lab2 = self.get_graph_label(func_graph_ncube, label=\"-x^3\", x_val=-3)          # Create a vertical line         vert_line = self.get_vertical_line_to_graph(1.5, func_graph_cube, color=YELLOW)         label_coord = self.input_to_graph_point(1.5, func_graph_cube)         text = MathTex(r\"x=1.5\")         text.next_to(label_coord)                 self.add(func_graph_cube, func_graph_ncube, graph_lab, graph_lab2, vert_line, text)         self.wait()<\/code><\/pre>\n<p>\u0415\u0441\u043b\u0438 \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0433\u043e \u043a\u0430\u0434\u0440\u0430 \u0441\u0446\u0435\u043d\u044b, \u0434\u043e\u0431\u0430\u0432\u044c\u0442\u0435 \u043a \u043a\u043e\u043c\u0430\u043d\u0434\u0435 \u043e\u043f\u0446\u0438\u044e -s:<\/p>\n<pre><code class=\"bash\">manim -p -qh -s more.py Graph<\/code><\/pre>\n<p>\u0422\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u043d\u043e \u0430\u043d\u0438\u043c\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043e\u0441\u0435\u0439: \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043d\u0443\u0436\u043d\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 animate=True.<\/p>\n<pre><code class=\"python\"> def construct(self):         self.setup_axes(animate=True)         ################### The below is the same as above ################### <\/code><\/pre>\n<pre><code class=\"bash\">manim -p -qh more.py Graph<\/code><\/pre>\n<figure class=\"full-width\"><figcaption><\/figcaption><\/figure>\n<h4>\u0421\u043e\u0432\u043c\u0435\u0441\u0442\u043d\u043e\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0435\u043d\u0438\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432<\/h4>\n<p>\u0414\u043b\u044f \u0433\u0440\u0443\u043f\u043f\u0438\u0440\u043e\u0432\u043a\u0438 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 Manim \u0438 \u0438\u0445 \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u043d\u043e\u0433\u043e \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0435\u043d\u0438\u044f \u043c\u043e\u0436\u043d\u043e \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f VGroup:<\/p>\n<figure class=\"full-width\"><figcaption><\/figcaption><\/figure>\n<pre><code class=\"python\">class GroupCircles(Scene):     def construct(self):          # Create circles         circle_green = Circle(color=GREEN)         circle_blue = Circle(color=BLUE)         circle_red = Circle(color=RED)                  # Set initial positions         circle_green.shift(LEFT)         circle_blue.shift(RIGHT)                  # Create 2 different groups         gr = VGroup(circle_green, circle_red)         gr2 = VGroup(circle_blue)         self.add(gr, gr2) # add two groups to the scene         self.wait()          self.play((gr + gr2).animate.shift(DOWN)) # shift 2 groups down                  self.play(gr.animate.shift(RIGHT)) # move only 1 group         self.play(gr.animate.shift(UP))          self.play((gr + gr2).animate.shift(RIGHT)) # shift 2 groups to the right         self.play(circle_red.animate.shift(RIGHT))         self.wait()<\/code><\/pre>\n<h4>\u041e\u0442\u0441\u043b\u0435\u0436\u0438\u0432\u0430\u043d\u0438\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0435\u043d\u0438\u044f<\/h4>\n<p>\u0414\u043b\u044f \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0441\u043b\u0435\u0434\u0430 \u0434\u0432\u0438\u0436\u0443\u0449\u0435\u0433\u043e\u0441\u044f \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u043c\u043e\u0436\u043d\u043e \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f TracedPath:<\/p>\n<figure class=\"full-width\"><figcaption><\/figcaption><\/figure>\n<pre><code class=\"python\"> class TracedPathExample(Scene):     def construct(self):         # Create circle and dot         circ = Circle(color=BLUE).shift(4*LEFT)         dot = Dot(color=BLUE).move_to(circ.get_start())          # Group dot and circle         rolling_circle = VGroup(circ, dot)         trace = TracedPath(circ.get_start)          rolling_circle.add_updater(lambda m: m.rotate(-0.3))  # Rotate the circle          self.add(trace, rolling_circle) # add trace and rolling circle to the scene          # Shift the circle to 8*RIGHT         self.play(rolling_circle.animate.shift(8*RIGHT), run_time=4, rate_func=linear) <\/code><\/pre>\n<h2>\u041f\u043e\u0434\u0432\u043e\u0434\u044f \u0438\u0442\u043e\u0433<\/h2>\n<p>\u041f\u0430\u043a\u0435\u0442 manim \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0441 \u0442\u0440\u0435\u043c\u044f \u0432\u0438\u0434\u0430\u043c\u0438 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432:<\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/docs.manim.community\/en\/stable\/reference.html%23mobjects\">Mobjects<\/a>: \u043e\u0431\u044a\u0435\u043a\u0442\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0433\u0443\u0442 \u0432\u044b\u0432\u043e\u0434\u0438\u0442\u044c\u0441\u044f \u043d\u0430 \u044d\u043a\u0440\u0430\u043d, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 Circle (\u041e\u043a\u0440\u0443\u0436\u043d\u043e\u0441\u0442\u044c), Square (\u041a\u0432\u0430\u0434\u0440\u0430\u0442), Matrix (\u041c\u0430\u0442\u0440\u0438\u0446\u0430), Angle (\u0423\u0433\u043e\u043b) \u0438 \u043f\u0440.<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/docs.manim.community\/en\/stable\/reference.html%23scenes\">\u0421\u0446\u0435\u043d\u044b<\/a>: &#171;\u0445\u043e\u043b\u0441\u0442\u044b&#187; \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u0439, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 Scene, MovingCameraScene \u0438 \u043f\u0440.<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/docs.manim.community\/en\/stable\/reference.html%23animations\">\u0410\u043d\u0438\u043c\u0430\u0446\u0438\u0438<\/a>: \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u0438, \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u043c\u044b\u0435 \u043a \u043e\u0431\u044a\u0435\u043a\u0442\u0430\u043c Mobjects, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 Write (\u0417\u0430\u043f\u0438\u0441\u0430\u0442\u044c), Create (\u0421\u043e\u0437\u0434\u0430\u0442\u044c), GrowFromCenter (\u0423\u0432\u0435\u043b\u0438\u0447\u0438\u0442\u044c \u043e\u0442 \u0446\u0435\u043d\u0442\u0440\u0430), Transform (\u041f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u0442\u044c) \u0438 \u043f\u0440.<\/p>\n<\/li>\n<\/ul>\n<p>\u041f\u0430\u043a\u0435\u0442 manim \u0438\u043c\u0435\u0435\u0442 \u0438 \u0434\u0440\u0443\u0433\u0443\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c, \u043d\u043e \u044d\u0442\u043e \u0442\u0435\u043c\u0430 \u0434\u043b\u044f \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438. \u0423\u0447\u0438\u0442\u044c\u0441\u044f \u043b\u0443\u0447\u0448\u0435 \u0432\u0441\u0435\u0433\u043e \u043d\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0435, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u044f \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u044e \u043f\u043e\u043f\u0440\u0430\u043a\u0442\u0438\u043a\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u043f\u0440\u0438\u043c\u0435\u0440\u0430\u0445 \u0438\u0437 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442\u044c\u0441\u044f \u0441 <a href=\"https:\/\/docs.manim.community\/en\/stable\/tutorials.html\">\u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u043e\u043c <\/a>\u043f\u043e<\/p>\n<\/hr>\n<\/div>\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-323135","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/323135","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=323135"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/323135\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=323135"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=323135"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=323135"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}