{ "cells": [ { "cell_type": "markdown", "id": "6a385c73", "metadata": { "tags": [] }, "source": [ "# サイクロイドのアニメーション作成" ] }, { "cell_type": "code", "execution_count": 1, "id": "71ccfa51-dfc1-457b-ac8b-963a93cc01d6", "metadata": { "tags": [] }, "outputs": [ { "data": { "text/markdown": [ "以下の手順でサイクロイドを描画するアニメーションを作成できます。\n", "\n", "1. 必要なライブラリをインポートします。\n", "\n", "```python\n", "import numpy as np\n", "import matplotlib.pyplot as plt\n", "from matplotlib.animation import FuncAnimation\n", "```\n", "\n", "2. サイクロイドの式を定義します。\n", "\n", "```python\n", "def cycloid(t, r):\n", " x = r * (t - np.sin(t))\n", " y = r * (1 - np.cos(t))\n", " return x, y\n", "```\n", "\n", "3. アニメーションのフレームを作成する関数を定義します。\n", "\n", "```python\n", "def animate(i):\n", " t = np.linspace(0, 4 * np.pi, 1000)\n", " x, y = cycloid(t + i * 0.1, 1)\n", " line.set_data(x, y)\n", " return line,\n", "```\n", "\n", "4. アニメーションを描画します。\n", "\n", "```python\n", "fig, ax = plt.subplots()\n", "line, = ax.plot([], [], lw=2)\n", "ax.set_aspect('equal')\n", "ax.set_xlim(-5, 25)\n", "ax.set_ylim(-5, 5)\n", "ani = FuncAnimation(fig, animate, frames=100, interval=50)\n", "plt.show()\n", "```\n", "\n", "これで、サイクロイドを描画するアニメーションが作成されます。`r`の値を変更することで、サイクロイドの大きさを調整できます。また、`interval`の値を変更することで、アニメーションの速度を調整できます。" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "%%ai_ask\n", "jupyterのpythonでサイクロイドを描画するアニメーションを作りたい" ] }, { "cell_type": "code", "execution_count": 1, "id": "c78a3c2d-fbcd-472d-8e76-57fcc2fbcab6", "metadata": { "tags": [] }, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", "\n", "\n", "\n", "
\n", " \n", "
\n", " \n", "
\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
\n", "
\n", " \n", " \n", " \n", " \n", " \n", " \n", "
\n", "
\n", "
\n", "\n", "\n", "\n" ], "text/plain": [ "" ] }, "execution_count": 1, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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7QKQYRi69957FRkZqRtuuMHscgAAAAB4EbcLQH/5y1+0bt06LVy4UJGRkWaXAwAAAMCLuFUAysvL069+9SuNHz9et956q9nlAAAAAPAybhWAHnroIVVVVenll182uxQAAAAAXshtAtDKlSv1/vvv64knnlCfPn3MLgcAAACAF7KbXYAklZeX6/7771ffvn312GOPXfTxkpKSmmzPyMhQQkLCRR8fAAAAgGdqkwA0ffp07dmzp0WveeONNzRixAhJ0hNPPKEjR45o7dq1CggIaIuSAAAAAKCRNglA2dnZOnDgQIteU1lZKUnavHmzFi9erNtuu01XX311W5Sj9PT0JtubGxkCAAAAYA1tEoDS0tJa/dpVq1apoaFBu3fv1rhx45y27d+/X5I0f/58LVmyRNOnT9cDDzxwMaUCAAAAsDC3mAMkSTt27Gh22759+7Rv3z4NHjzYZfUAAAAA8D6mrwL39NNPyzCMJr9uv/12SdLbb78twzD00ksvmVssAAAAAI9megACAAAAAFchAAEAAACwDAIQAAAAAMuwGYZhmF2Eq5xeBru5ZbIBAAAAuI4Z1+eMAAEAAACwDAIQAAAAAMsgAAEAAACwDAIQAAAAAMsgAAEAAACwDAIQAAAAAMsgAAEAAACwDAIQAAAAAMsgAAEAAACwDAIQAAAAAMsgAAEAAACwDAIQAAAAAMsgAAEAAACwDAIQAAAAAMuwGYZhmF2Eq4SFham2tlYJCQlmlwIAAABYXkZGhvz8/FRWVuay97S77J3cQFVVlSyU9ywvIyNDkgi8FsH5thbOt7Vwvq2F820ttbW1qqurc+l7WioA9evXT5KUnp5uciVwhaSkJEmcb6vgfFsL59taON/Wwvm2ltPn25WYAwQAAADAMghAAAAAACyDAAQAAADAMghAAAAAACyDAAQAAADAMiz1HCAAAAAA1sYIEAAAAADLIAABAAAAsAwCEAAAAADLIAABAAAAsAwCEAAAAADLIAABAAAAsAwCEAAAAADLIAABAAAAsAxLB6CvvvpKNput2a+RI0eaXSJaweFwaN68eerbt68CAwPVrVs33XnnncrNzTW7NLSxcePGnbMPr1692uwS0UJbt27V888/r2nTpql79+6y2WwKDAw87+veeOMNjRgxQqGhoerYsaOuu+46paamuqBiXIyWnu+nn376nH3+8ccfd2H1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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import matplotlib.animation\n", "import matplotlib.pyplot as plt\n", "import numpy as np\n", "plt.rcParams[\"animation.html\"] = \"jshtml\"\n", "plt.rcParams['figure.dpi'] = 150\n", "plt.ioff()\n", "fig, ax = plt.subplots()\n", "from matplotlib.animation import FuncAnimation\n", "\n", "def cycloid(t, r):\n", " x = r * (t - np.sin(t))\n", " y = r * (1 - np.cos(t))\n", " return x, y\n", "\n", "def animate(i):\n", " t = np.linspace(0, 4 * np.pi, 1000)\n", " x, y = cycloid(t + i * 0.1, 1)\n", " line.set_data(x, y)\n", " return line,\n", "\n", "#fig, ax = plt.subplots()\n", "line, = ax.plot([], [], lw=2)\n", "ax.set_aspect('equal')\n", "ax.set_xlim(-5, 25)\n", "ax.set_ylim(-5, 5)\n", "FuncAnimation(fig, animate, frames=100, interval=50)" ] }, { "cell_type": "markdown", "id": "09f5ab47-1620-4cb6-9b9d-1330fb7d022f", "metadata": {}, "source": [ "## ニュートンがケプラーの第二法則を証明したサイクロイド" ] }, { "cell_type": "markdown", "id": "05b51e8e", "metadata": {}, "source": [ "* [Python Matplotlib Tips: Draw cycloid animation using matplotlib.animation.ArtistAnimation](https://pythonmatplotlibtips.blogspot.com/2017/12/cycloid-animation-artistanimation.html)\n", "* [[matplotlib animation] 13. サイクロイド(cycloid) – サボテンパイソン](https://sabopy.com/py/matplotlib-animation-13/)" ] }, { "cell_type": "code", "execution_count": 4, "id": "badebfe7", "metadata": { "tags": [] }, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import numpy as np\n", "import matplotlib.pyplot as plt\n", "import matplotlib.animation as animation\n", "from IPython.display import HTML\n", "\n", "fig, ax = plt.subplots()\n", "\n", "def update(num):\n", " if len(round_circles) > 0:\n", " round_circles.pop().remove()\n", " round_circles2.pop().remove()\n", " cycloids.pop().remove()\n", " points.pop().remove()\n", " \n", " round_circle, = plt.plot(cycloid_c[num]+x, R+y, 'b:', lw=1)\n", " round_circle2, = plt.plot(cycloid_c[num]+x2, R+y2, 'b-', lw=1)\n", " cycloid, = plt.plot(cycloid_x[:num+1] ,cycloid_y[:num+1], 'r-', lw=1)\n", " point, = plt.plot(cycloid_x[num], cycloid_y[num], 'ko', markersize=4)\n", " \n", " round_circles.append(round_circle)\n", " round_circles2.append(round_circle2)\n", " cycloids.append(cycloid)\n", " points.append(point)\n", " \n", " theta_str = r'$\\theta=$'\n", " ax.set_title(theta_str + str(theta[num]/np.pi)[:4] + str(r' $\\pi$'))\n", "\n", "ax.grid()\n", "ax.set_xlabel('x')\n", "ax.set_ylabel('y')\n", "ax.set_aspect('equal')\n", "\n", "#plot data\n", "e = 0.0167 # earth\n", "#e = 0.0935 # mars\n", "#e = 0.9673 # 1P/Halley\n", "#e=0.6\n", "a = 1\n", "b = np.sqrt(a**2-e**2)\n", "R = a/e\n", "theta = np.linspace(0,3*np.pi,200)\n", "phi = np.linspace(0,2*np.pi,100)\n", "\n", "x = R*np.cos(phi)\n", "y = R*np.sin(phi)\n", "round_circles =[]\n", "\n", "x2 = R*np.cos(phi)*e\n", "y2 = R*np.sin(phi)*e\n", "round_circles2 =[]\n", "\n", "cycloid_x = R*e*(1/e*theta-np.sin(theta))\n", "cycloid_y = R*(1-np.cos(theta)*e)\n", "cycloids=[]\n", "\n", "cycloid_c = R*theta\n", "points=[]\n", "\n", "ani = animation.FuncAnimation(fig, update, 200, interval=100)\n", "HTML(ani.to_html5_video())" ] }, { "cell_type": "code", "execution_count": null, "id": "e55cacde", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "id": "50abdcf0", "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "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.11.8" }, "toc": { "base_numbering": 1, "nav_menu": {}, "number_sections": true, "sideBar": true, "skip_h1_title": false, "title_cell": "Table of Contents", "title_sidebar": "Contents", "toc_cell": false, "toc_position": {}, "toc_section_display": true, "toc_window_display": false } }, "nbformat": 4, "nbformat_minor": 5 }