{ "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
Manim Community v0.18.0\n",
       "\n",
       "
\n" ], "text/plain": [ "Manim Community \u001b[32mv0.\u001b[0m\u001b[32m18.0\u001b[0m\n", "\n" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "from manim import *\n", "from manim_geometry import *\n", "\n", "config.media_embed = True\n", "config.media_width = \"100%\"\n", "_RV = \"-v WARNING -qm --progress_bar None --disable_caching\"\n", "_RI = \"-v WARNING -s --progress_bar None --disable_caching\"" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Pentagon\n", "\n", "I used this video as a reference:\n", "\n", "" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "FRAME_HEIGHT = config.frame_height\n", "FRAME_WIDTH = config.frame_width\n", "\n", "class Pentagon(Scene):\n", " def fade_out(self, *mobs, **kwargs):\n", " self.play(\n", " *map(FadeOut, mobs),\n", " **kwargs\n", " )\n", "\n", " def construct(self):\n", " geos = Geos(self, dots_style={\"radius\": 0.08})\n", " frame_y_radius = FRAME_HEIGHT/2\n", " frame_x_radius = FRAME_WIDTH/2\n", " \n", " geos.create_geos({\n", " \"lY\": geos.line(DOWN*frame_y_radius, UP*frame_y_radius),\n", " \"lX\": geos.line(LEFT*frame_x_radius, RIGHT*frame_x_radius),\n", " \"cO\": geos.circle(ORIGIN, 3.5, line_kwargs={\"color\": RED}),\n", " \"dR\": geos.dot_from_method(lambda n: n(\"cO\").get_right()),\n", " \"dQ\": geos.dot_from_method(lambda n: n(\"cO\").get_left()),\n", " \"dA\": geos.dot_from_method(lambda n: n(\"cO\").get_top()),\n", " \"bR\": geos.common_chord_partial(\"dR\", \"cO\"),\n", " \"dM\": geos.intersection_lines(\"bR,lX\"),\n", " \"xMR\": geos.distance(\"dM,dA\"),\n", " \"aM\": geos.arc3p(\"dQ,dM,dA\", radius=\"xMR\", overshot_ang=0, other_angle=True),\n", " \"dS\": geos.nearest_icl(\"aM,lX,dQ\"),\n", " \"xSA\": geos.distance(\"dS,dA\"),\n", " \"oAS\": geos.angle2dots(\"dA,dS\"),\n", " \"aA\": geos.arc(\"dA\", \"xSA\", \"oAS\", -30*DEGREES),\n", " \"dB\": geos.intersection_circles(\"aA,cO\", close_to=\"dQ\"),\n", " \"lEND\": geos.segment(\"dA,dB\"),\n", " },\n", " set_all_labels=True,\n", " label_buff=0.05,\n", " )\n", "\n", " self.add(geos.lX, geos.lY)\n", "\n", " ac = lambda c: {\n", " \"all_styles\": {\"color\": c},\n", " \"color\": c\n", " }\n", "\n", " geos.auto_animation(\"cO\")\n", " geos.auto_animation(\"bR\", **ac(BLUE))\n", " geos.show_dot_and_label(\"dM\")\n", " self.fade_out(geos.bR)\n", " geos.auto_animation(\"aM\", show_dot=False, reverse=True, **ac(BLUE))\n", " geos.show_dot_and_label(\"dS\")\n", " geos.auto_animation(\"aA\", show_dot=False)\n", " geos.show_dot_and_label(\"dB\")\n", " geos.auto_animation(\"lEND\", show_dots=False)\n", " self.fade_out(\n", " geos.dM, geos.dS, geos._M, geos._S,\n", " geos.dB, geos._B, geos.aA, geos.aM\n", " )\n", "\n", " rotate_line = geos.lEND\n", " main_circle = geos.cO\n", " pentagon = RegularPolygon(\n", " 5,\n", " radius=geos.cO.radius,\n", " color=YELLOW,\n", " stroke_width=2\n", " )\n", " pentagon.shift(\n", " -pentagon.get_center_of_mass()\n", " )\n", "\n", " arcs = VGroup()\n", "\n", " for _ in range(5):\n", " tmp_circle = ICircle(rotate_line.get_length()).move_to(rotate_line.get_end())\n", " arc = tmp_circle.common_chord_group_partial(main_circle, only_arc=True)\n", " arc.reverse_points()\n", " arc.set_stroke(width=3)\n", "\n", " arcs.add(arc)\n", "\n", " self.play(\n", " Rotate(rotate_line, -arc.angle, about_point=rotate_line.get_end()),\n", " Create(arc),\n", " )\n", " rotate_line.reverse_points()\n", "\n", " self.play(FadeOut(rotate_line))\n", " self.play(Create(pentagon))\n", " self.wait()\n", "\n", "%manim $_RV Pentagon" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "venv", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.12.1" } }, "nbformat": 4, "nbformat_minor": 2 }