diff --git a/README.md b/README.md index 3b62607..00d8bd3 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,3 @@ # Robotics_with_Python -Learning Robotics with Python +将基础的线性代数与Python结合,练习机器人中的基础概念。本套教程适合有一定编程基础的学习者。 +建议学习者边学习边观看3Blue1Brown中有关线性代数的视频教程。 diff --git "a/lesson001_\345\210\232\344\275\223\347\212\266\346\200\201\346\217\217\350\277\260\344\270\216\347\273\230\345\210\266\347\256\255\345\244\264.ipynb" "b/lesson001_\345\210\232\344\275\223\347\212\266\346\200\201\346\217\217\350\277\260\344\270\216\347\273\230\345\210\266\347\256\255\345\244\264.ipynb" new file mode 100644 index 0000000..06a6c3e --- /dev/null +++ "b/lesson001_\345\210\232\344\275\223\347\212\266\346\200\201\346\217\217\350\277\260\344\270\216\347\273\230\345\210\266\347\256\255\345\244\264.ipynb" @@ -0,0 +1,322 @@ +{ + "cells": [ + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# 刚体状态的描述" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 线性代数与几何\n", + "### 自由度(DOF Degree of Freedom)\n", + "- 平面:\n", + " - 移动2DOFs(Translation)\n", + " - 转动1DOF(Rotation)" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 线性代数中的向量与几何当中的区别\n", + "[3B1B](https://www.bilibili.com/video/BV1ib411t7YR/?vd_source=375037aa76bdefb050bee20a8960c769)" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Python练习" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### 点的建立与运算" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "##### 利用list类型" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[1, 1]\n" + ] + } + ], + "source": [ + "# 建立连个点\n", + "Point_A=[1,2]\n", + "Point_B=[2,3]\n", + "Line_AB=[Point_B[0]-Point_A[0],Point_B[1]-Point_A[1]]\n", + "print(Line_AB)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "##### 利用numpy类型" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[1 1]\n" + ] + } + ], + "source": [ + "#建立两个点\n", + "import numpy as np\n", + "Point_A=np.array([1,2])\n", + "Point_B=np.array([2,3])\n", + "Line_AB=Point_B-Point_A\n", + "print(Line_AB)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### 绘制点与向量\n", + "以下内容参考如下官方链接改变而成:[链接1](https://matplotlib.org/stable/gallery/shapes_and_collections/scatter.html#sphx-glr-gallery-shapes-and-collections-scatter-pyhttps://matplotlib.org/stable/gallery/shapes_and_collections/scatter.html#sphx-glr-gallery-shapes-and-collections-scatter-pyhttps://matplotlib.org/stable/gallery/shapes_and_collections/scatter.html#sphx-glr-gallery-shapes-and-collections-scatter-pyhttps://matplotlib.org/stable/gallery/shapes_and_collections/scatter.html#sphx-glr-gallery-shapes-and-collections-scatter-py),[链接2](https://www.scaler.com/topics/matplotlib/arrow-in-matplotlib/https://www.scaler.com/topics/matplotlib/arrow-in-matplotlib/)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "##### 错误方法" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[1 2]\n", + "[2 3]\n" + ] + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "ax = plt.axes()\n", + "print(Point_A)\n", + "print(Point_B)\n", + "ax.arrow(Point_A[0],Point_A[1],Point_B[0],Point_B[1])\n", + "plt.scatter(Point_B[0],Point_B[1])\n", + "plt.grid() # 增加网格\n", + "plt.show()" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "是坐标轴相等`plt.axis('equal')`" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[1 2]\n", + "[2 3]\n" + ] + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "ax = plt.axes()\n", + "print(Point_A)\n", + "print(Point_B)\n", + "ax.arrow(Point_A[0],Point_A[1],Point_B[0],Point_B[1])\n", + "plt.scatter(Point_B[0],Point_B[1])\n", + "plt.grid() # 增加网格\n", + "plt.axis('equal')\n", + "plt.show()" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "##### 正确方法" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[1 2]\n", + "[2 3]\n" + ] + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "ax = plt.axes()\n", + "print(Point_A)\n", + "print(Point_B)\n", + "# ax.arrow(Point_A[0],Point_A[1],Point_B[0],Point_B[1])\n", + "ax.arrow(Point_A[0],Point_A[1],Line_AB[0],Line_AB[1])\n", + "plt.scatter(Point_B[0],Point_B[1])\n", + "plt.grid()\n", + "plt.axis('equal')\n", + "plt.show()" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "##### 修改样式" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[1 2]\n", + "[2 3]\n" + ] + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "ax = plt.axes()\n", + "print(Point_A)\n", + "print(Point_B)\n", + "ax.arrow(Point_A[0],Point_A[1],Line_AB[0],Line_AB[1],width=0.01, head_width=0.05, head_length=0.1, fc='r', ec='b',length_includes_head=True)\n", + "plt.scatter(Point_A[0],Point_A[1],color='blue',s=30*2**2)\n", + "plt.grid()\n", + "plt.axis('equal')\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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.10.4" + }, + "orig_nbformat": 4 + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git "a/lesson002_\345\210\232\344\275\223\347\212\266\346\200\201\346\217\217\350\277\260\344\270\216\345\235\220\346\240\207\347\263\273\347\273\230\345\210\266.ipynb" "b/lesson002_\345\210\232\344\275\223\347\212\266\346\200\201\346\217\217\350\277\260\344\270\216\345\235\220\346\240\207\347\263\273\347\273\230\345\210\266.ipynb" new file mode 100644 index 0000000..b6052a3 --- /dev/null +++ "b/lesson002_\345\210\232\344\275\223\347\212\266\346\200\201\346\217\217\350\277\260\344\270\216\345\235\220\346\240\207\347\263\273\347\273\230\345\210\266.ipynb" @@ -0,0 +1,259 @@ +{ + "cells": [ + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# 刚体的表示——建立坐标系" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 初步生成根据向量生成坐标" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "Point_A=np.array([1,2])\n", + "Point_B=np.array([2,3])\n", + "Line_AB=Point_B-Point_A" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "def frame_show(Point_A,Point_B,ax):\n", + " import numpy as np\n", + " R90=np.array([[0,-1],[1,0]])\n", + " Line_AB=Point_B-Point_A\n", + " ax.arrow(Point_A[0],Point_A[1],Line_AB[0],Line_AB[1],head_width=0.5,length_includes_head=True,color=\"red\")\n", + " R90=np.array([[0,-1],[1,0]])#旋转公式\n", + " Line_AB_Rot90=R90.dot(Line_AB)#点乘 \n", + " ax.arrow(Point_A[0],Point_A[1],Line_AB_Rot90[0],Line_AB_Rot90[1],head_width=0.5,length_includes_head=True,color=\"green\")\n", + " plt.scatter(Point_A[0],Point_A[1])" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(-10.0, 10.0)" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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tmyZXn311Vr3f+4cn969eyszM1NDhgzRF198oW7dutW/8AsUyXlPnz49tK5Pnz5KTU3V5MmTVVBQYN3HdNfneu/bt08jRozQ2LFjNWnSpBq3jdfrjfCmTp2qLVu21Dg3RJIGDhyogQMHhh4PGjRIl156qebPn69HHnnE6TIbxMiRI0P/3adPH+Xk5Cg7O1uvvvqqcnNzY1hZ9LzwwgsaOXKkOnToUG2bRLjW8caREDNjxowa06gkde3atU77ysjIqDJjOXgnSkZGRrXbnD85qKysTMeOHat2GyfU5+ewYMECtW7dWqNHj474eDk5OZIq/rKP5ZvahVz/nJwclZWVaffu3erRo0eV5zMyMlRaWqrjx49X6o05dOhQVK9tOJGe9/79+3X99ddr0KBBeu655yI+Xrxc73DatGmjRo0aVblrrKbrlJGREVH7eHb33XeHbiiI9C/siy66SP369VNhYaFD1TmvRYsWuuSSS6o9h0S61pK0Z88e/e1vf4u4VzQRrnXwmh06dEiZmZmh9YcOHVLfvn3DblOf14dqRTSDxkG1Tew9dOhQaN38+fONx+MxZ86cCbuv4MTejz/+OLRu2bJlcT+xNxAImC5dupgZM2bUa/tVq1YZSeb//u//Griy6HnppZeM2+02x44dC/t8cGLva6+9Flq3fft26yb27t2713Tv3t3ceuutpqysrF77iPfrfdVVV5m777479Li8vNx87Wtfq3Fi77e//e1K6wYOHGjVZM9AIGCmTp1qOnToYD777LN67aOsrMz06NHD3H///Q1cXfScOHHCtGzZ0vzqV78K+3wiXOtz5efnm4yMDHP27NmItrPxWquaib1z5swJrfP5fHWa2BvJ60O19UTU2gF79uwxmzZtMrNmzTLNmjUzmzZtMps2bTInTpwwxlRc5F69eplhw4aZzZs3m3feece0bdvW5OXlhfaxbt0606NHD7N3797QuhEjRph+/fqZdevWmVWrVpnu3bub2267LernF4m//e1vRpLZtm1blef27t1revToYdatW2eMMaawsNA8/PDD5uOPPza7du0yS5cuNV27djXXXntttMuut9WrV5unnnrKbN682XzxxRfmpZdeMm3btjXf//73Q23OP29jjLnzzjtNp06dzHvvvWc+/vhjM3DgQDNw4MBYnEK97N2711x88cVmyJAhZu/evebAgQOh5dw2tl/vl19+2aSlpZmFCxeaTz/91PzoRz8yLVq0CN1pePvtt5uZM2eG2n/44YcmJSXFzJkzx2zbts3k5+ebiy66yHzyySexOoWITZkyxXi9XrNixYpK1/Vf//pXqM355z1r1iyzbNky88UXX5gNGzaYW2+91aSnp5utW7fG4hTqZcaMGWbFihVm165d5sMPPzRDhw41bdq0MYcPHzbGJOa1DiovLzedOnUyDzzwQJXnEuVanzhxIvTeLMk8+eSTZtOmTWbPnj3GGGMee+wx06JFC7N06VLzj3/8w9x4442mS5cu5vTp06F93HDDDWbu3Lmhx7W9PtRVzEPMHXfcYSRVWd5///1Qm927d5uRI0eaxo0bmzZt2pgZM2ZUSrzvv/++kWR27doVWnf06FFz2223mWbNmhmPx2MmTpwYCkbx6rbbbjODBg0K+9yuXbsq/VyKiorMtddea1q1amXS0tLMxRdfbH784x8bn88XxYovzIYNG0xOTo7xer0mPT3dXHrppebRRx+t1MN2/nkbY8zp06fNXXfdZVq2bGmaNGlibrrppkoBIN4tWLAg7P/z53aMJsr1njt3runUqZNJTU01V111lVm7dm3oueuuu87ccccdldq/+uqr5pJLLjGpqanm61//uvnzn/8c5YovTHXXdcGCBaE255/3fffdF/oZtW/f3nzrW98yGzdujH7xF2DcuHEmMzPTpKammq997Wtm3LhxprCwMPR8Il7roGXLlhlJZseOHVWeS5RrHXyPPX8JnlsgEDC/+MUvTPv27U1aWpoZMmRIlZ9Hdna2yc/Pr7SupteHunIZY0xkA1AAAACxF/efEwMAABAOIQYAAFiJEAMAAKxEiAEAAFYixAAAACsRYgAAgJUIMQAAwEqEGAAAYCVCDAAAsBIhBgAAWIkQAwAArESIAQAAVvp/qlX4kULUHaYAAAAASUVORK5CYII=", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "ax=plt.axes()\n", + "frame_show(np.array([4,5]),Point_B,ax)\n", + "frame_show(np.array([0,0]),Point_B,ax)\n", + "plt.axis('equal')# 等轴\n", + "plt.xlim([-10,10])\n", + "plt.ylim([-10,10])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### 更改生成单位向量的坐标" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [], + "source": [ + "def frame_show(label,Point_A,Point_B,ax,size):\n", + " import numpy as np\n", + " R90=np.array([[0,-1],[1,0]])\n", + " Line_AB=Point_B-Point_A\n", + " norm_Line_AB=np.linalg.norm(Line_AB)\n", + " if norm_Line_AB!=1:\n", + " Line_AB=Line_AB/norm_Line_AB*size\n", + " ax.arrow(Point_A[0],Point_A[1],Line_AB[0],Line_AB[1],head_width=0.5,length_includes_head=True,color=\"red\")\n", + " R90=np.array([[0,-1],[1,0]])#旋转公式\n", + " Line_AB_Rot90=R90.dot(Line_AB)#点乘 \n", + " ax.arrow(Point_A[0],Point_A[1],Line_AB_Rot90[0],Line_AB_Rot90[1],head_width=0.5,length_includes_head=True,color=\"green\")\n", + " plt.scatter(Point_A[0],Point_A[1])\n", + " label=\"{\"+str(label)+\"}\"\n", + " plt.text(Point_A[0],Point_A[1],label)" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(-10.0, 10.0)" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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891JAADASoQYAABgJUIMAACwEiEGAABYiRADAACsRIgBAABWIsQAAAArEWIAAICVCDEAAMBKhBgAAGAlQgwAALASIQYAAFiJEAMAAKxEiAEAAFYixAAAACsRYgAAgJUIMQAAwEqEGAAAYCVCDAAAsBIhBgAAWIkQAwAArESIAQAAViLEAAAAKxFiAACAlQgxAADASoQYAABgJUIMAACwEiEGAABYKaapC6iJMUaSVFJS0sSVAACAuvJ9bvs+x50S1iFm//79kqTMzMwmrgQAANTX/v375Xa7Hdt/WIeY1NRUSdKOHTsc/UsINyUlJcrMzFRRUZGSk5ObupyQ4bw570jAeXPekcDj8ahTp07+z3GnhHWIiYqqnLLjdrsj6uL7JCcnc94RhPOOLJx3ZInU8/Z9jju2f0f3DgAA4BBCDAAAsFJYh5i4uDjNmDFDcXFxTV1KSHHenHck4Lw570jAeTt73i7j9P1PAAAADgjrnhgAAIBgCDEAAMBKhBgAAGAlQgwAALBSk4eYe++9V4MHD1bLli2VkpISsM2OHTs0evRotWzZUu3bt9cdd9yh8vLyGvd74MABjR8/XsnJyUpJSdGkSZN06NAhB87g5H300UdyuVwBl5UrVwbdbujQodXa33jjjSGs/OR17ty52jncd999NW5z9OhR5ebmqk2bNkpMTNSll16qvXv3hqjik7dt2zZNmjRJ2dnZSkhIUNeuXTVjxgyVlZXVuJ2N1/vRRx9V586dFR8fr5ycHH322Wc1tn/55Zd12mmnKT4+Xr1799bf//73EFXaOPLz83XWWWcpKSlJ7du315gxY7Rp06YatykoKKh2XePj40NUceO4++67q53DaaedVuM2tl9rKfDPL5fLpdzc3IDtbb3Wn3zyiX7zm98oIyNDLpdLr7/+epX3jTG66667lJ6eroSEBA0bNkybN2+udb/1/fkQSJOHmLKyMo0dO1Y33XRTwPcrKio0evRolZWVaenSpXr66adVUFCgu+66q8b9jh8/Xhs2bNCSJUv01ltv6ZNPPtFvf/tbJ07hpA0ePFi7d++uslx//fXKzs7WgAEDatx28uTJVbZ74IEHQlR147nnnnuqnMMtt9xSY/vbbrtNb775pl5++WV9/PHH2rVrly655JIQVXvyNm7cKK/Xq8cee0wbNmzQQw89pAULFuj3v/99rdvadL1ffPFF3X777ZoxY4bWrFmjvn37asSIEfruu+8Ctl+6dKnGjRunSZMmae3atRozZozGjBmj9evXh7jyhvv444+Vm5ur5cuXa8mSJTp27JiGDx+uw4cP17hdcnJyleu6ffv2EFXceM4444wq5/Dpp58GbdscrrUkrVy5sso5L1myRJI0duzYoNvYeK0PHz6svn376tFHHw34/gMPPKBHHnlECxYs0IoVK9SqVSuNGDFCR48eDbrP+v58CMqEiYULFxq3211t/d///ncTFRVl9uzZ4183f/58k5ycbEpLSwPu66uvvjKSzMqVK/3r3nnnHeNyuUxxcXGj197YysrKTLt27cw999xTY7tzzz3XTJ06NTRFOSQrK8s89NBDdW7/448/mhYtWpiXX37Zv+7rr782ksyyZcscqDA0HnjgAZOdnV1jG9uu98CBA01ubq7/dUVFhcnIyDD5+fkB219++eVm9OjRVdbl5OSYG264wdE6nfTdd98ZSebjjz8O2ibYzz6bzJgxw/Tt27fO7ZvjtTbGmKlTp5quXbsar9cb8P3mcK0lmddee83/2uv1mrS0NDN79mz/uh9//NHExcWZ559/Puh+6vvzIZgm74mpzbJly9S7d2916NDBv27EiBEqKSnRhg0bgm6TkpJSpRdj2LBhioqK0ooVKxyv+WQtXrxY+/fv18SJE2tt++yzz6pt27bq1auX8vLy9NNPP4WgwsZ13333qU2bNurfv79mz55d41Dh6tWrdezYMQ0bNsy/7rTTTlOnTp20bNmyUJTrCI/HU6cvSrPlepeVlWn16tVVrlNUVJSGDRsW9DotW7asSnup8t+67ddVUq3X9tChQ8rKylJmZqYuuuiioD/bwtnmzZuVkZGhLl26aPz48dqxY0fQts3xWpeVlemZZ57RddddJ5fLFbRdc7jWx9u6dav27NlT5Xq63W7l5OQEvZ4N+fkQTFh/AaQk7dmzp0qAkeR/vWfPnqDbtG/fvsq6mJgYpaamBt0mnDz55JMaMWKEOnbsWGO7q666SllZWcrIyNAXX3yhO++8U5s2bdKiRYtCVOnJmzJlin72s58pNTVVS5cuVV5ennbv3q0HH3wwYPs9e/YoNja22vypDh06WHFtAyksLNS8efM0Z86cGtvZdL2///57VVRUBPy3u3HjxoDbBPu3but19Xq9uvXWWzVkyBD16tUraLsePXroqaeeUp8+feTxeDRnzhwNHjxYGzZsqPVnQLjIyclRQUGBevTood27d2vmzJn6xS9+ofXr1yspKala++Z2rSXp9ddf148//qgJEyYEbdMcrvWJfNesPtezIT8fgnEkxEyfPl33339/jW2+/vrrWid+2a4hfw87d+7Ue++9p5deeqnW/R8/x6d3795KT0/XBRdcoG+//VZdu3ZteOEnqT7nffvtt/vX9enTR7GxsbrhhhuUn59v3WO6G3K9i4uLNXLkSI0dO1aTJ0+ucdtwvd4ILDc3V+vXr69xbogkDRo0SIMGDfK/Hjx4sE4//XQ99thj+vOf/+x0mY1i1KhR/v/u06ePcnJylJWVpZdeekmTJk1qwspC58knn9SoUaOUkZERtE1zuNbhxpEQM23atBrTqCR16dKlTvtKS0urNmPZdydKWlpa0G1OnBxUXl6uAwcOBN3GCQ35e1i4cKHatGmjCy+8sN7Hy8nJkVT5m31TfqidzPXPyclReXm5tm3bph49elR7Py0tTWVlZfrxxx+r9Mbs3bs3pNc2kPqe965du3Teeedp8ODBevzxx+t9vHC53oG0bdtW0dHR1e4aq+k6paWl1at9OLv55pv9NxTU9zfsFi1aqH///iosLHSoOuelpKTo1FNPDXoOzelaS9L27dv1/vvv17tXtDlca98127t3r9LT0/3r9+7dq379+gXcpiE/H4Kq1wwaB9U2sXfv3r3+dY899phJTk42R48eDbgv38TeVatW+de99957YT+x1+v1muzsbDNt2rQGbf/pp58aSebzzz9v5MpC55lnnjFRUVHmwIEDAd/3Tex95ZVX/Os2btxo3cTenTt3mu7du5srr7zSlJeXN2gf4X69Bw4caG6++Wb/64qKCnPKKafUOLH317/+dZV1gwYNsmqyp9frNbm5uSYjI8N88803DdpHeXm56dGjh7ntttsaubrQOXjwoGndurV5+OGHA77fHK718WbMmGHS0tLMsWPH6rWdjddaQSb2zpkzx7/O4/HUaWJvfX4+BK2nXq0dsH37drN27Vozc+ZMk5iYaNauXWvWrl1rDh48aIypvMi9evUyw4cPN+vWrTPvvvuuadeuncnLy/PvY8WKFaZHjx5m586d/nUjR440/fv3NytWrDCffvqp6d69uxk3blzIz68+3n//fSPJfP3119Xe27lzp+nRo4dZsWKFMcaYwsJCc88995hVq1aZrVu3mjfeeMN06dLFnHPOOaEuu8GWLl1qHnroIbNu3Trz7bffmmeeeca0a9fOXHPNNf42J563McbceOONplOnTuaDDz4wq1atMoMGDTKDBg1qilNokJ07d5pu3bqZCy64wOzcudPs3r3bvxzfxvbr/cILL5i4uDhTUFBgvvrqK/Pb3/7WpKSk+O80vPrqq8306dP97f/1r3+ZmJgYM2fOHPP111+bGTNmmBYtWpgvv/yyqU6h3m666SbjdrvNRx99VOW6/vTTT/42J573zJkzzXvvvWe+/fZbs3r1anPllVea+Ph4s2HDhqY4hQaZNm2a+eijj8zWrVvNv/71LzNs2DDTtm1b89133xljmue19qmoqDCdOnUyd955Z7X3msu1PnjwoP+zWZJ58MEHzdq1a8327duNMcbcd999JiUlxbzxxhvmiy++MBdddJHJzs42R44c8e/j/PPPN/PmzfO/ru3nQ101eYi59tprjaRqy4cffuhvs23bNjNq1CiTkJBg2rZta6ZNm1Yl8X744YdGktm6dat/3f79+824ceNMYmKiSU5ONhMnTvQHo3A1btw4M3jw4IDvbd26tcrfy44dO8w555xjUlNTTVxcnOnWrZu54447jMfjCWHFJ2f16tUmJyfHuN1uEx8fb04//XQza9asKj1sJ563McYcOXLE/Pd//7dp3bq1admypbn44ourBIBwt3DhwoD/zx/fMdpcrve8efNMp06dTGxsrBk4cKBZvny5/71zzz3XXHvttVXav/TSS+bUU081sbGx5owzzjBvv/12iCs+OcGu68KFC/1tTjzvW2+91f931KFDB/OrX/3KrFmzJvTFn4QrrrjCpKenm9jYWHPKKaeYK664whQWFvrfb47X2ue9994zksymTZuqvddcrrXvM/bExXduXq/X/OlPfzIdOnQwcXFx5oILLqj295GVlWVmzJhRZV1NPx/qymWMMfUbgAIAAGh6Yf+cGAAAgEAIMQAAwEqEGAAAYCVCDAAAsBIhBgAAWIkQAwAArESIAQAAViLEAAAAKxFiAACAlQgxAADASoQYAABgJUIMAACw0v8DJS8IFdr/XDMAAAAASUVORK5CYII=", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "ax=plt.axes()\n", + "frame_show(1,np.array([4,5]),Point_B,ax,3)\n", + "frame_show(2,np.array([0,0]),Point_B,ax,3)\n", + "plt.axis('equal')# 等轴\n", + "plt.xlim([-10,10])\n", + "plt.ylim([-10,10])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 由坐标中心和角度生成坐标" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [], + "source": [ + "def Rot_func(angle):\n", + " import numpy as np\n", + " angle=np.deg2rad(angle)\n", + " R90=np.array([[0,-1],[1,0]])\n", + " elem_sim=lambda elem: np.around(elem,0) if (elem-np.around(elem,0))<1e-10 else elem\n", + " A11=elem_sim(np.cos(angle))\n", + " A12=elem_sim(-np.sin(angle))\n", + " A21=elem_sim(np.sin(angle))\n", + " A22=A11\n", + " Rot=np.array([[A11,A12],[A21,A22]])\n", + " return Rot" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [], + "source": [ + "def frame_show_angle_center(label,center,angle,ax,size):\n", + " Rot=Rot_func(angle)\n", + " x=np.array([1,0])\n", + " x=Rot.dot(x)\n", + " frame_show(label,center,x+center,ax,size)" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(-10.0, 10.0)" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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k8vlqnYpKChQMBiUJP37v/+7br/9dvXv31/5+flyuVxatGhRlcfPycmRz+cLLfv377+0qwMAAFGrTnNipk6dqvHjx1fbpmvXrjp06JCkinNgEhMT1bVrVxUVFVW5b2JiohITE+tSEgAAiFF1CjEpKSlKSUmpsV3//v2VmJioXbt26Uc/+pEk6cKFC9q3b5/S09PrVykAAMB3OPLtJLfbrfvuu0+5ubnyer1KT0/XrFmzJEljxoxx4pQAACDGOPacmFmzZikhIUF33323zp07p8zMTH300Udq06aNU6cEAAAxxGWMMY1dRFX8fr88Ho98Pp/cbndjlwMAAGohUp/f/O4kAABgJUIMAACwEiEGAABYiRADAACsRIgBAABWIsQAAAArEWIAAICVCDEAAMBKhBgAAGAlQgwAALASIQYAAFiJEAMAAKxEiAEAAFYixAAAACsRYgAAgJUIMQAAwEqEGAAAYCVCDAAAsBIhBgAAWIkQAwAArESIAQAAViLEAAAAKxFiAACAlQgxAADASoQYAABgJUIMAACwEiEGAABYiRADAACslNDYBVTHGCNJ8vv9jVwJAACorYuf2xc/x53SpEPMiRMnJEler7eRKwEAAHV14sQJeTwex47fpENM27ZtJUlFRUWO/hCaGr/fL6/Xq/3798vtdjd2ORHDdXPdsYDr5rpjgc/nU5cuXUKf405p0iEmLq58yo7H44mpzr/I7XZz3TGE644tXHdsidXrvvg57tjxHT06AACAQwgxAADASk06xCQmJio3N1eJiYmNXUpEcd1cdyzgurnuWMB1O3vdLuP0958AAAAc0KTvxAAAAFSFEAMAAKxEiAEAAFYixAAAACs1eoj5wx/+oMGDB6tFixZq3bp12DZFRUUaNWqUWrRooQ4dOujRRx9VWVlZtcc9efKksrKy5Ha71bp1a02cOFHffPONA1dw6VauXCmXyxV22bBhQ5X7DR06tFL7++67L4KVX7orrrii0jU89dRT1e5z/vx5ZWdnq127dmrZsqVuv/12HTlyJEIVX7p9+/Zp4sSJysjIUHJysrp166bc3FyVlpZWu5+N/f3888/riiuuUFJSkjIzM/Xpp59W237RokXq0aOHkpKS1KtXL73//vsRqrRh5OXl6brrrlOrVq3UoUMHjR49Wrt27ap2n/nz51fq16SkpAhV3DCeeOKJStfQ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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "ax=plt.axes()\n", + "frame_show_angle_center(1,np.array([4,5]),45,ax,3)\n", + "plt.axis('equal')# 等轴\n", + "plt.xlim([-10,10])\n", + "plt.ylim([-10,10])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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.10.4" + }, + "orig_nbformat": 4 + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git "a/lesson003python\345\260\201\350\243\205/Lesson003 part1.ipynb" "b/lesson003python\345\260\201\350\243\205/Lesson003 part1.ipynb" new file mode 100644 index 0000000..d5708d1 --- /dev/null +++ "b/lesson003python\345\260\201\350\243\205/Lesson003 part1.ipynb" @@ -0,0 +1,283 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "c41c2f76-9b84-419a-b5a5-6a4d62e4b786", + "metadata": { + "tags": [] + }, + "source": [ + "# 测试利用类来封装" + ] + }, + { + "cell_type": "markdown", + "id": "a2fa6250-5820-48f3-93e4-c3040ca409bb", + "metadata": { + "jp-MarkdownHeadingCollapsed": true, + "tags": [] + }, + "source": [ + "## 定义函数缺少self" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "32719cdc-6d3d-4e45-8f0b-ccfaa84948b4", + "metadata": {}, + "outputs": [], + "source": [ + "class frame2D:\n", + " def __init__(self,center,x_axis):\n", + " self.center=center\n", + " self.x_axis=x_axis\n", + " def show(text,size,color):#def show(self,text,size,color):\n", + " print(text)\n", + " print(size)\n", + " print(color)" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "244fa469-a114-4d5b-ac16-5a363968994e", + "metadata": {}, + "outputs": [], + "source": [ + "A=frame2D([0,0],[0,1])" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "8ff47e12-4ee4-4bb6-b57d-50c2ec7f7266", + "metadata": {}, + "outputs": [ + { + "ename": "TypeError", + "evalue": "show() takes 3 positional arguments but 4 were given", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mTypeError\u001b[0m Traceback (most recent call last)", + "Cell \u001b[1;32mIn[3], line 1\u001b[0m\n\u001b[1;32m----> 1\u001b[0m \u001b[43mA\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mshow\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m1\u001b[39;49m\u001b[43m,\u001b[49m\u001b[38;5;241;43m1\u001b[39;49m\u001b[43m,\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mred\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m)\u001b[49m\n", + "\u001b[1;31mTypeError\u001b[0m: show() takes 3 positional arguments but 4 were given" + ] + } + ], + "source": [ + "A.show(1,1,\"red\")" + ] + }, + { + "cell_type": "markdown", + "id": "365190df-ca44-409e-a323-586b7a2ddb9f", + "metadata": { + "jp-MarkdownHeadingCollapsed": true, + "tags": [] + }, + "source": [ + "## 改正后" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "c6a36a9b-9d53-4af0-a858-8fba8e7a21cc", + "metadata": {}, + "outputs": [], + "source": [ + "class frame2D:\n", + " def __init__(self,center,x_axis):\n", + " self.center=center\n", + " self.x_axis=x_axis\n", + " def show(self,text,size,color):\n", + " print(text)\n", + " print(size)\n", + " print(color)" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "d692e504-d0ae-44f7-8cc2-66c7ce12af59", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1\n", + "1\n", + "red\n" + ] + } + ], + "source": [ + "A=frame2D([0,0],[0,1])\n", + "A.show(1,1,\"red\")" + ] + }, + { + "cell_type": "markdown", + "id": "0be45c90-d794-4ca9-a02e-924f5263fa00", + "metadata": {}, + "source": [ + "# 正式编写frame2D类" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "8513cc44-8a1a-4620-84d4-3d2463a9b78e", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(-10.0, 10.0)" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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iDl27JjGjh2rF154QW3btnV6dwAAoJlwPGJycnI0atQoDRs2rNaxgUBAfr8/7AEAAFCdeCc3/vrrr2vjxo1at25dncbn5+drxowZTk4JAAA0EY5diSkqKtJ9992nV199VUlJSXVaJzc3Vz6fL/QoKipyanoAAMByLmOMcWLDixcv1k033aQWLVqEllVUVMjlcikuLk6BQCDster4/X55PB75fD653W4npgkAAM6zaL1/O/Zx0tChQ/XZZ5+FLRs/frx69+6thx56qNaAAQAAqIljEZOSkqI+ffqELbvgggvUvn37KssBAADqi9/YCwAArOTot5POtnz58mjuDgAANGFciQEAAFYiYgAAgJWIGAAAYCUiBgAAWImIAQAAViJiAACAlYgYAABgJSIGAABYiYgBAABWImIAAICViBgAAGAlIgYAAFiJiAEAAFYiYgAAgJWIGAAAYCUiBgAAWImIAQAAViJiAACAlYgYAABgJSIGAABYiYgBAABWImIAAICViBgAAGAlIgYAAFiJiAEAAFYiYgAAgJWIGAAAYCUiBgAAWImIAQAAViJiAACAlYgYAABgJSIGAABYiYgBAABWImIAAICViBgAAGAlIgYAAFiJiAEAAFYiYgAAgJWIGAAAYCVHIyY/P19XXnmlUlJS1KlTJ40ePVo7duxwcpcAAKCZcDRiVqxYoZycHK1Zs0bLli3TqVOndP311+v48eNO7hYAADQDLmOMidbODh06pE6dOmnFihW65pprah3v9/vl8Xjk8/nkdrujMEMAAHCuovX+He/Ylqvh8/kkSe3atav29UAgoEAgEHru9/ujMi8AAGCfqN3YGwwGdf/99+vqq69Wnz59qh2Tn58vj8cTeni93mhNDwAAWCZqHydNmjRJ77//vlauXKkuXbpUO6a6KzFer5ePkwAAsEiT+jhp8uTJevfdd/XRRx9FDBhJSkxMVGJiYjSmBAAALOdoxBhjdO+99+qtt97S8uXLlZmZ6eTuAABAM+JoxOTk5OiPf/yjlixZopSUFJWUlEiSPB6PkpOTndw1AABo4hy9J8blclW7fMGCBRo3blyt6/MVawAA7NMk7omJ4q+gAQAAzQx/dxIAALASEQMAAKxExAAAACsRMQAAwEpEDAAAsBIRAwAArETEAAAAKxExAADASkQMAACwEhEDAACsRMQAAAArETEAAMBKRAwAALASEQMAAKxExAAAACsRMQAAwEpEDAAAsBIRAwAArETEAAAAKxExAADASkQMAACwEhEDAACsRMQAAAArETEAAMBKRAwAALASEQMAAKxExAAAACsRMQAAwEpEDAAAsBIRAwAArETEAAAAKxExAADASkQMAACwEhEDAACsRMQAAAArETEAAMBKRAwAALASEQMAAKwUlYh59tln1a1bNyUlJSk7O1uffPJJNHYLAACaMMcj5o033tDUqVOVl5enjRs36rLLLtPw4cN18OBBp3cNAACaMMcj5qmnntLEiRM1fvx4XXLJJZo3b55atWqll156yeldAwCAJszRiCkrK9OGDRs0bNiw/+4wLk7Dhg3T6tWrq4wPBALy+/1hDwAAgOo4GjFfffWVKioq1Llz57DlnTt3VklJSZXx+fn58ng8oYfX63VyegAAwGKN6ttJubm58vl8oUdRUVGspwQAABqpeCc33qFDB7Vo0UKlpaVhy0tLS5WamlplfGJiohITE52cEgAAaCIcvRKTkJCgK664Qn//+99Dy4LBoP7+979r0KBBTu4aAAA0cY5eiZGkqVOn6q677tKAAQM0cOBAPfPMMzp+/LjGjx/v9K4BAEAT5njE3HrrrTp06JAefvhhlZSU6PLLL9cHH3xQ5WZfAACA+nAZY0ysJxGJ3++Xx+ORz+eT2+2O9XQAAEAdROv9u1F9OwkAAKCuiBgAAGAlIgYAAFiJiAEAAFYiYgAAgJWIGAAAYCUiBgAAWImIAQAAViJiAACAlYgYAABgJSIGAABYiYgBAABWImIAAICViBgAAGAlIgYAAFiJiAEAAFYiYgAAgJWIGAAAYCUiBgAAWImIAQAAViJiAACAlYgYAABgJSIGAABYiYgBAABWImIAAICViBgAAGAlIgYAAFiJiAEAAFYiYgAAgJWIGAAAYCUiBgAAWImIAQAAViJiAACAlYgYAABgJSIGAABYiYgBAABWImIAAICViBgAAGAlIgYAAFjJsYjZs2ePJkyYoMzMTCUnJ6t79+7Ky8tTWVmZU7sEAADNSLxTG96+fbuCwaDmz5+vHj16aMuWLZo4caKOHz+uOXPmOLVbAADQTLiMMSZaO5s9e7aee+457dq1q07j/X6/PB6PfD6f3G63w7MDAADnQ7Tevx27ElMdn8+ndu3aRXw9EAgoEAiEnvv9/mhMCwAAWChqN/YWFBRo7ty5uvvuuyOOyc/Pl8fjCT28Xm+0pgcAACxT74iZPn26XC5XjY/t27eHrVNcXKwRI0ZozJgxmjhxYsRt5+bmyufzhR5FRUX1PyIAANAs1PuemEOHDunw4cM1jsnKylJCQoIkaf/+/RoyZIiuuuoqLVy4UHFxde8m7okBAMA+jfaemI4dO6pjx451GltcXKzvfve7uuKKK7RgwYJ6BQwAAEBNHLuxt7i4WEOGDFFGRobmzJmjQ4cOhV5LTU11arcAAKCZcCxili1bpoKCAhUUFKhLly5hr0XxW90AAKCJcuzznXHjxskYU+0DAADgXHGTCgAAsBIRAwAArETEAAAAKxExAADASkQMAACwEhEDAACsRMQAAAArETEAAMBKRAwAALASEQMAAKxExAAAACsRMQAAwEpEDAAAsBIRAwAArETEAAAAKxExAADASkQMAACwEhEDAACsRMQAAAArETEAAMBKRAwAALASEQMAAKxExAAAACsRMQAAwEpEDAAAsBIRAwAArETEAAAAKxExAADASkQMAACwEhEDAACsRMQAAAArETEAAMBKRAwAALASEQMAAKxExAAAACsRMQAAwEpEDAAAsBIRAwAArETEAAAAK0UlYgKBgC6//HK5XC5t3rw5GrsEAABNXFQi5le/+pXS09OjsSsAANBMOB4x77//vv72t79pzpw5Tu8KAAA0I/FObry0tFQTJ07U4sWL1apVq1rHBwIBBQKB0HO/3+/k9AAAgMUcuxJjjNG4ceN0zz33aMCAAXVaJz8/Xx6PJ/Twer1OTQ8AAFiu3hEzffp0uVyuGh/bt2/X3LlzdfToUeXm5tZ527m5ufL5fKFHUVFRfacHAACaCZcxxtRnhUOHDunw4cM1jsnKytItt9yid955Ry6XK7S8oqJCLVq00NixY/Xyyy/Xui+/3y+PxyOfzye3212faQIAgBiJ1vt3vSOmrgoLC8Puadm/f7+GDx+uP/3pT8rOzlaXLl1q3QYRAwCAfaL1/u3Yjb1du3YNe966dWtJUvfu3esUMAAAADXhN/YCAAArOfoV6zN169ZNDn1yBQAAmiGuxAAAACsRMQAAwEpEDAAAsBIRAwAArETEAAAAKxExAADASkQMAACwEhEDAACsRMQAAAArETEAAMBKRAwAALASEQMAAKxExAAAACsRMQAAwEpEDAAAsBIRAwAArETEAAAAKxExAADASkQMAACwEhEDAACsRMQAAAArETEAAMBKRAwAALASEQMAAKxExAAAACsRMQAAwEpEDAAAsBIRAwAArETEAAAAKxExAADASkQMAACwEhEDAACsRMQAAAArETEAAMBKRAwAALASEQMAAKxExAAAACsRMQAAwEqORsx7772n7OxsJScnq23btho9erSTuwMAAM1IvFMb/vOf/6yJEyfqscce03XXXafy8nJt2bLFqd0BAIBmxpGIKS8v13333afZs2drwoQJoeWXXHKJE7sDAADNkCMfJ23cuFHFxcWKi4tT//79lZaWppEjR9Z6JSYQCMjv94c9AAAAquNIxOzatUuS9Mgjj+i3v/2t3n33XbVt21ZDhgzRkSNHIq6Xn58vj8cTeni9XiemBwAAmoB6Rcz06dPlcrlqfGzfvl3BYFCS9Jvf/EY333yzrrjiCi1YsEAul0uLFi2KuP3c3Fz5fL7Qo6io6NyODgAANFn1uidm2rRpGjduXI1jsrKydODAAUnh98AkJiYqKytLhYWFEddNTExUYmJifaYEAACaqXpFTMeOHdWxY8dax11xxRVKTEzUjh079O1vf1uSdOrUKe3Zs0cZGRkNmykAAMAZHPl2ktvt1j333KO8vDx5vV5lZGRo9uzZkqQxY8Y4sUsAANDMOPZ7YmbPnq34+HjdeeedOnHihLKzs/WPf/xDbdu2dWqXAACgGXEZY0ysJxGJ3++Xx+ORz+eT2+2O9XQAAEAdROv9m787CQAAWImIAQAAViJiAACAlYgYAABgJSIGAABYiYgBAABWImIAAICViBgAAGAlIgYAAFiJiAEAAFYiYgAAgJWIGAAAYCUiBgAAWImIAQAAViJiAACAlYgYAABgJSIGAABYiYgBAABWImIAAICViBgAAGAlIgYAAFiJiAEAAFYiYgAAgJWIGAAAYCUiBgAAWImIAQAAViJiAACAlYgYAABgpfhYT6AmxhhJkt/vj/FMAABAXVW+b1e+jzulUUfM4cOHJUlerzfGMwEAAPV1+PBheTwex7bfqCOmXbt2kqTCwkJH/xAaG7/fL6/Xq6KiIrnd7lhPJ2o4bo67OeC4Oe7mwOfzqWvXrqH3cac06oiJizt9y47H42lWJ7+S2+3muJsRjrt54bibl+Z63JXv445t39GtAwAAOISIAQAAVmrUEZOYmKi8vDwlJibGeipRxXFz3M0Bx81xNwcct7PH7TJOf/8JAADAAY36SgwAAEAkRAwAALASEQMAAKxExAAAACvFPGJ+97vfafDgwWrVqpXatGlT7ZjCwkKNGjVKrVq1UqdOnfTLX/5S5eXlNW73yJEjGjt2rNxut9q0aaMJEybo2LFjDhzBuVu+fLlcLle1j3Xr1kVcb8iQIVXG33PPPVGc+bnr1q1blWOYNWtWjeucPHlSOTk5at++vVq3bq2bb75ZpaWlUZrxuduzZ48mTJigzMxMJScnq3v37srLy1NZWVmN69l4vp999ll169ZNSUlJys7O1ieffFLj+EWLFql3795KSkpS37599de//jVKMz0/8vPzdeWVVyolJUWdOnXS6NGjtWPHjhrXWbhwYZXzmpSUFKUZnx+PPPJIlWPo3bt3jevYfq6l6n9+uVwu5eTkVDve1nP90Ucf6YYbblB6erpcLpcWL14c9roxRg8//LDS0tKUnJysYcOG6csvv6x1u/X9+VCdmEdMWVmZxowZo0mTJlX7ekVFhUaNGqWysjKtWrVKL7/8shYuXKiHH364xu2OHTtWW7du1bJly/Tuu+/qo48+0s9//nMnDuGcDR48WAcOHAh7/OxnP1NmZqYGDBhQ47oTJ04MW++JJ56I0qzPn5kzZ4Ydw7333lvj+AceeEDvvPOOFi1apBUrVmj//v364Q9/GKXZnrvt27crGAxq/vz52rp1q55++mnNmzdPv/71r2td16bz/cYbb2jq1KnKy8vTxo0bddlll2n48OE6ePBgteNXrVql22+/XRMmTNCmTZs0evRojR49Wlu2bInyzBtuxYoVysnJ0Zo1a7Rs2TKdOnVK119/vY4fP17jem63O+y87t27N0ozPn8uvfTSsGNYuXJlxLFN4VxL0rp168KOedmyZZKkMWPGRFzHxnN9/PhxXXbZZXr22Werff2JJ57QH/7wB82bN09r167VBRdcoOHDh+vkyZMRt1nfnw8RmUZiwYIFxuPxVFn+17/+1cTFxZmSkpLQsueee8643W4TCASq3da2bduMJLNu3brQsvfff9+4XC5TXFx83ud+vpWVlZmOHTuamTNn1jju2muvNffdd190JuWQjIwM8/TTT9d5/Ndff21atmxpFi1aFFr2+eefG0lm9erVDswwOp544gmTmZlZ4xjbzvfA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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "R90=np.array([[0,-1],[1,0]])\n", + "def frame_show(label,Point_A,Point_B,ax,size):\n", + " import numpy as np\n", + " R90=np.array([[0,-1],[1,0]])\n", + " Line_AB=Point_B-Point_A\n", + " norm_Line_AB=np.linalg.norm(Line_AB)\n", + " if norm_Line_AB!=1:\n", + " Line_AB=Line_AB/norm_Line_AB*size\n", + " ax.arrow(Point_A[0],Point_A[1],Line_AB[0],Line_AB[1],head_width=0.5,length_includes_head=True,color=\"red\")\n", + " R90=np.array([[0,-1],[1,0]])#旋转公式\n", + " Line_AB_Rot90=R90.dot(Line_AB)#点乘 \n", + " ax.arrow(Point_A[0],Point_A[1],Line_AB_Rot90[0],Line_AB_Rot90[1],head_width=0.5,length_includes_head=True,color=\"green\")\n", + " plt.scatter(Point_A[0],Point_A[1])\n", + " label=\"{\"+str(label)+\"}\"\n", + " plt.text(Point_A[0],Point_A[1],label)\n", + " \n", + "def Rot_func(angle):\n", + " import numpy as np\n", + " angle=np.deg2rad(angle)\n", + " R90=np.array([[0,-1],[1,0]])\n", + " elem_sim=lambda elem: np.around(elem,0) if (elem-np.around(elem,0))<1e-10 else elem\n", + " A11=elem_sim(np.cos(angle))\n", + " A12=elem_sim(-np.sin(angle))\n", + " A21=elem_sim(np.sin(angle))\n", + " A22=A11\n", + " Rot=np.array([[A11,A12],[A21,A22]])\n", + " return Rot\n", + "\n", + "def frame_show_angle_center(label,center,angle,ax,size):\n", + " Rot=Rot_func(angle)\n", + " x=np.array([1,0])\n", + " x=Rot.dot(x)\n", + " frame_show(label,center,x+center,ax,size)\n", + "\n", + "ax=plt.axes()\n", + "frame_show_angle_center(1,np.array([4,5]),45,ax,2)\n", + "plt.axis('equal')# 等轴\n", + "plt.xlim([-10,10])\n", + "plt.ylim([-10,10])\n", + "\n", + " " + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "7246ea9a-5387-4749-94e8-36b896c7e698", + "metadata": {}, + "outputs": [], + "source": [ + "class frame2D:\n", + " def __init__(self):\n", + " self.center=np.array([0,0])\n", + " self.x_axis=np.array([1,0])\n", + " self.y_axis=np.array([0,1])\n", + " self.angle=0\n", + " def show(self,ax,label,size,color):\n", + " frame_show_angle_center(label,self.center,self.angle,ax,size)" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "225fbab1-ccb1-4093-a90c-ee69de9853d3", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "<__main__.frame2D object at 0x000002C63EA50CD0>\n" + ] + }, + { + "data": { + "image/png": "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W4qcvy4qUBhW2x70ybRtK11zjfT888W+rPPEiRNatGiR0tLSSjwn7V1/uYy5mC8VCQ+fzyePxyOv1yu3213T1QFQRd/kfqOeL/WUTIRW3X1ER06dVeumsbo6NU4yAT3xxBN66qmndOTIETXx+6Urr5T271dAUjtJc6ZN0y2PPaZjx47pkksu0fbt25WamlrsPMOGDdOpU6f04Ycf8t5RGwQKdHNWc3nOndGb934qpfRTgVFhe8+cqSN+v5pIwQnXA4zRKpdL0Q0ayERG6vszZ3TppZdq6dKlateuXbHDp6en65NPPtHf//53tW7dOqyXhpKF6/M7LD0xL7zwgtq1a6fY2FilpaXpq6++CsdpAdQyPeJ7qGFBX11ydp5GvvylJi3cqJEvf6me459TTGysZsyYof/3zDNq0q1byITd5TNm6HRcnG7OyJAktWzZUjfccINeeeWVEs/z/PPPa+/evWrWrJlmzJgRtutDCba+Lz3bXUvOufSmGkmv/kR/n9hesbExhe09eXJhgJEKhwZ/+L16lDHamJenf545oy+6dlXHqCjdeP31OnXqVLFTTJ8+XdHR0YqPj9d9990XvmtDjXM8xLz11lt66KGHlJmZqfXr1+vyyy/XkCFDdOTIEadPDaCW+XjzYbXO+50i1TJk/XdN2yr+7mf042bxenj8eOVdMGF33oYNOnHihBo2bKioqChFRUVpyZIlevXVV4PzaM73xBNPqEmTJvr88881fvz4cFwaSrL1fWnRPZLvUMjqPp6TWverhrpjaH89/PLLyithV4+kjj8s/bdt07ytW7Vzzx69dcUVhUNO503knTNnjo4ePaply5Zp+vTpDl4QahvHQ8zTTz+tcePGacyYMeratateeuklNWrUqNTfoADUTQUBo2kfbJUkuRT61FxXgxhFt0rRsYG/1mFJ386bF5ywe/z4cb333ntauHChNm7cGFw2bNigf//731q2bFmxc61evVq/+MUv9KMf/UhxcXHhuDxcKFAgffyogrN3z9OwgdQzPlK/7bxPh0+c0LflHcsYFd23dObbb6XJkwuf99O3r/T881q9YoV+8pOf6IYbblB8fHz1XgdqteK3AFSjvLw8rVu3Thk/dAFLUkREhAYPHqzVq4s/atrv94dMzvL5fE5WD0AYfbXnhA57z5a63bgidDzuEknS2SuvDK7/v//7P7Vo0UK33367XBd8ZcDNN9+sefPmaejQoSHr/X6/mjRpItSgfauK9cCEMmp67qgkqaR/Fd9Lyvnh77mSnpAUK+lG6T9PXV6zRlqzRn5j1GTHjsIemtGjJeZB1RuO9sQcO3ZMBQUFxZJxfHy8cnJyipXPysqSx+MJLhc+6AqAvY6cKj3ABP3wlNfzh4heeeUV3XrrrcUCjCTddtttev/994s9rbWgoKDYM2YQZt/lllsk8ocmLemxeC9LSvxhGSjpmKQlkjqfX+iHOTQFkiJzcqRJk6QNFXxGDeqEWnWLdUZGhrxeb3DJzs4ufycAVmjdNLbcMpGNmsnlcoX01G7atEkvvPBCieVvv/12+f1+tWz5nzk2u3fvVm5urhITE6teaVy8JuUP67RuXDiweGG//AoVDkIVLSd+WDfwwgNEROiYpH9JSuzUSZo3T+rTp0rVhl0cDTEtW7ZUZGSkcnNDE3lubq4SEhKKlY+JiZHb7Q5ZANQNV6fGKdETqxK+Q1qS5JKU1KKpHnjgAU2cOFExMTHaXzTBt4Iuu+wydezYUd26ddPNN99c5TqjClL6Se4kqYwWj4lro4nDb9FESTGSKtTaET98bEVG6qbmzdVKUqO2bfWLFSukX/5Saty46nWHNRwNMdHR0erdu7f+9re/BdcFAgH97W9/U9++fZ08NYBaJjLCpcyfdpVU/GOt6HXmT7vqueeek9fr1fbt25WUlFSpcyxdulRHjx7Vhg0b1KhRo6pXGhcvIlIa+uQPL0pp8aEz9eyE38grabukUlv7vOCiQYMKe1yOHNG8TZt0+PBh7dm3r9L/VlA3ODqxV5Ieeugh3XvvverTp4+uvvpqPfvsszp9+rTGjBnj9KkB1DJDuyfqxbuu1LQPtoZM8k3wxCrzp101tHvhEFCTJk0uamJu27Ztq62uqAZdfybd/qfCu5TOn+TrTpKGzizcfmCZmkgq1toREVIgUBhcrr9euvNOafhw6by7zYgtcDzE3HHHHTp69Kgee+wx5eTk6IorrtDHH3/MbXBAPTW0e6Ju6Jqgr/acCHlib2REacMOsFrXn0ldhhXerfRdbuFcmZR+hT01F6pAcAHOx9cOAABqzpo1hc97iYgguNQh4fr8drwnBgCAUqWlSRs3Fj68juCCSiLEAABqVs+eNV0DWKpWPScGAACgoggxAADASoQYAABgJUIMAACwEiEGAABYiRADAACsRIgBAABWIsQAAAArEWIAAICVCDEAAMBKhBgAAGAlQgwAALASIQYAAFiJEAMAAKxEiAEAAFYixAAAACsRYgAAgJUIMQAAwEqEGAAAYCVCDAAAsBIhBgAAWIkQAwAArESIAQAAViLEAAAAKxFiAACAlQgxAADASoQYAABgJUIMAACwEiEGAABYiRADAACsRIgBAABWIsQAAAArEWIAAICVCDEAAMBKhBgAAGAlQgwAALASIQYAAFjJsRCzd+9ejR07VqmpqWrYsKE6dOigzMxM5eXlOXVKAABQj0Q5deDt27crEAho7ty56tixozZv3qxx48bp9OnTmj17tlOnBQAA9YTLGGPCdbJZs2bpxRdf1Lfffluh8j6fTx6PR16vV2632+HaAQCA6hCuz2/HemJK4vV6FRcXV+p2v98vv98ffO3z+cJRLQAAYKGwTezdtWuX5syZo/vuu6/UMllZWfJ4PMElOTk5XNUDAACWqXSImTp1qlwuV5nL9u3bQ/Y5ePCghg4dqhEjRmjcuHGlHjsjI0Nerze4ZGdnV/6KAABAvVDpOTFHjx7V8ePHyyzTvn17RUdHS5IOHTqkAQMG6JprrtGCBQsUEVHx3MScGAAA7FNr58S0atVKrVq1qlDZgwcPauDAgerdu7fmz59fqQADAABQFscm9h48eFADBgxQSkqKZs+eraNHjwa3JSQkOHVaAABQTzgWYpYvX65du3Zp165datOmTci2MN7VDQAA6ijHxndGjx4tY0yJCwAAQFUxSQUAAFiJEAMAAKxEiAEAAFYixAAAACsRYgAAgJUIMQAAwEqEGAAAYCVCDAAAsBIhBgAAWIkQAwAArESIAQAAViLEAAAAKxFiAACAlQgxAADASoQYAABgJUIMAACwEiEGAABYiRADAACsRIgBAABWIsQAAAArEWIAAICVCDEAAMBKhBgAAGAlQgwAALASIQYAAFiJEAMAAKxEiAEAAFYixAAAACsRYgAAgJUIMQAAwEqEGAAAYCVCDAAAsBIhBgAAWIkQAwAArESIAQAAViLEAAAAKxFiAACAlQgxAADASoQYAABgpbCEGL/fryuuuEIul0sbN24MxykBAEAdF5YQ89vf/lZJSUnhOBUAAKgnHA8xH330kZYtW6bZs2c7fSoAAFCPRDl58NzcXI0bN07vvvuuGjVqVG55v98vv98ffO3z+ZysHgAAsJhjPTHGGI0ePVrjx49Xnz59KrRPVlaWPB5PcElOTnaqegAAwHKVDjFTp06Vy+Uqc9m+fbvmzJmjU6dOKSMjo8LHzsjIkNfrDS7Z2dmVrR4AAKgnXMYYU5kdjh49quPHj5dZpn379rr99tv1wQcfyOVyBdcXFBQoMjJSo0aN0quvvlruuXw+nzwej7xer9xud2WqCQAAaki4Pr8rHWIqav/+/SFzWg4dOqQhQ4bo7bffVlpamtq0aVPuMQgxAADYJ1yf345N7G3btm3I6yZNmkiSOnToUKEAAwAAUBae2AsAAKzk6C3W52vXrp0cGrkCAAD1ED0xAADASoQYAABgJUIMAACwEiEGAABYiRADAACsRIgBAABWIsQAAAArEWIAAICVCDEAAMBKhBgAAGAlQgwAALASIQYAAFiJEAMAAKxEiAEAAFYixAAAACsRYgAAgJUIMQAAwEqEGAAAYCVCDAAAsBIhBgAAWIkQAwAArESIAQAAViLEAAAAKxFiAACAlQgxAADASoQYAABgJUIMAACwEiEGAABYiRADAACsRIgBAABWIsQAAAArEWIAAICVCDEAAMBKhBgAAGAlQgwAALASIQYAAFiJEAMAAKxEiAEAAFZyNMT89a9/VVpamho2bKjmzZtr+PDhTp4OAADUI1FOHfjPf/6zxo0bpxkzZuj6669Xfn6+Nm/e7NTpAABAPeNIiMnPz9ekSZM0a9YsjR07Nri+a9euTpwOAADUQ44MJ61fv14HDx5URESEevXqpcTERN10003l9sT4/X75fL6QBQAAoCSOhJhvv/1WkvT444/r97//vT788EM1b95cAwYM0IkTJ0rdLysrSx6PJ7gkJyc7UT0AAFAHVCrETJ06VS6Xq8xl+/btCgQCkqTf/e53uu2229S7d2/Nnz9fLpdLixcvLvX4GRkZ8nq9wSU7O7tqVwcAAOqsSs2JmTJlikaPHl1mmfbt2+vw4cOSQufAxMTEqH379tq/f3+p+8bExCgmJqYyVQIAAPVUpUJMq1at1KpVq3LL9e7dWzExMdqxY4d+9KMfSZLOnTunvXv3KiUl5eJqCgAAcB5H7k5yu90aP368MjMzlZycrJSUFM2aNUuSNGLECCdOCQAA6hnHnhMza9YsRUVF6e6779aZM2eUlpamTz/9VM2bN3fqlAAAoB5xGWNMTVeiND6fTx6PR16vV263u6arAwAAKiBcn998dxIAALASIQYAAFiJEAMAAKxEiAEAAFYixAAAACsRYgAAgJUIMQAAwEqEGAAAYCVCDAAAsBIhBgAAWIkQAwAArESIAQAAViLEAAAAKxFiAACAlQgxAADASoQYAABgJUIMAACwEiEGAABYiRADAACsRIgBAABWIsQAAAArEWIAAICVCDEAAMBKhBgAAGAlQgwAALASIQYAAFiJEAMAAKxEiAEAAFaKqukKlMUYI0ny+Xw1XBMAAFBRRZ/bRZ/jTqnVIeb48eOSpOTk5BquCQAAqKzjx4/L4/E4dvxaHWLi4uIkSfv373f0h1Db+Hw+JScnKzs7W263u6arEzZcN9ddH3DdXHd94PV61bZt2+DnuFNqdYiJiCicsuPxeOpV4xdxu91cdz3CddcvXHf9Ul+vu+hz3LHjO3p0AAAAhxBiAACAlWp1iImJiVFmZqZiYmJquiphxXVz3fUB18111wdct7PX7TJO3/8EAADggFrdEwMAAFAaQgwAALASIQYAAFiJEAMAAKxU4yHmv//7v9WvXz81atRIzZo1K7HM/v37NWzYMDVq1EitW7fWI488ovz8/DKPe+LECY0aNUput1vNmjXT2LFj9d133zlwBVW3YsUKuVyuEpe1a9eWut+AAQOKlR8/fnwYa1517dq1K3YNM2fOLHOfs2fPKj09XS1atFCTJk102223KTc3N0w1rrq9e/dq7NixSk1NVcOGDdWhQwdlZmYqLy+vzP1sbO8XXnhB7dq1U2xsrNLS0vTVV1+VWX7x4sXq0qWLYmNj1aNHDy1ZsiRMNa0eWVlZuuqqq9S0aVO1bt1aw4cP144dO8rcZ8GCBcXaNTY2Nkw1rh6PP/54sWvo0qVLmfvY3tZSye9fLpdL6enpJZa3ta0///xz/fSnP1VSUpJcLpfefffdkO3GGD322GNKTExUw4YNNXjwYO3cubPc41b2/aEkNR5i8vLyNGLECE2YMKHE7QUFBRo2bJjy8vK0atUqvfrqq1qwYIEee+yxMo87atQobdmyRcuXL9eHH36ozz//XL/+9a+duIQq69evnw4fPhyy/OpXv1Jqaqr69OlT5r7jxo0L2e+pp54KU62rz/Tp00Ou4YEHHiiz/IMPPqgPPvhAixcv1sqVK3Xo0CH9/Oc/D1Ntq2779u0KBAKaO3eutmzZomeeeUYvvfSS/uu//qvcfW1q77feeksPPfSQMjMztX79el1++eUaMmSIjhw5UmL5VatWaeTIkRo7dqw2bNig4cOHa/jw4dq8eXOYa37xVq5cqfT0dH355Zdavny5zp07pxtvvFGnT58ucz+32x3Srvv27QtTjatPt27dQq7hiy++KLVsXWhrSVq7dm3INS9fvlySNGLEiFL3sbGtT58+rcsvv1wvvPBCidufeuopPf/883rppZe0Zs0aNW7cWEOGDNHZs2dLPWZl3x9KZWqJ+fPnG4/HU2z9kiVLTEREhMnJyQmue/HFF43b7TZ+v7/EY23dutVIMmvXrg2u++ijj4zL5TIHDx6s9rpXt7y8PNOqVSszffr0Mstdd911ZtKkSeGplENSUlLMM888U+HyJ0+eNA0aNDCLFy8Ortu2bZuRZFavXu1ADcPjqaeeMqmpqWWWsa29r776apOenh58XVBQYJKSkkxWVlaJ5W+//XYzbNiwkHVpaWnmvvvuc7SeTjpy5IiRZFauXFlqmdLe+2ySmZlpLr/88gqXr4ttbYwxkyZNMh06dDCBQKDE7XWhrSWZd955J/g6EAiYhIQEM2vWrOC6kydPmpiYGPPmm2+WepzKvj+UpsZ7YsqzevVq9ejRQ/Hx8cF1Q4YMkc/n05YtW0rdp1mzZiG9GIMHD1ZERITWrFnjeJ2r6v3339fx48c1ZsyYcsu+/vrratmypbp3766MjAx9//33Yahh9Zo5c6ZatGihXr16adasWWUOFa5bt07nzp3T4MGDg+u6dOmitm3bavXq1eGoriO8Xm+FvijNlvbOy8vTunXrQtopIiJCgwcPLrWdVq9eHVJeKvy/bnu7Siq3bb/77julpKQoOTlZt9xyS6nvbbXZzp07lZSUpPbt22vUqFHav39/qWXrYlvn5eXptdde0y9/+Uu5XK5Sy9WFtj7fnj17lJOTE9KeHo9HaWlppbbnxbw/lKZWfwGkJOXk5IQEGEnB1zk5OaXu07p165B1UVFRiouLK3Wf2mTevHkaMmSI2rRpU2a5X/ziF0pJSVFSUpI2bdqkRx99VDt27NBf/vKXMNW06iZOnKgrr7xScXFxWrVqlTIyMnT48GE9/fTTJZbPyclRdHR0sflT8fHxVrRtSXbt2qU5c+Zo9uzZZZazqb2PHTumgoKCEv/vbt++vcR9Svu/bmu7BgIBTZ48Wf3791f37t1LLde5c2e98sor6tmzp7xer2bPnq1+/fppy5Yt5b4H1BZpaWlasGCBOnfurMOHD2vatGn68Y9/rM2bN6tp06bFyte1tpakd999VydPntTo0aNLLVMX2vpCRW1Wmfa8mPeH0jgSYqZOnaonn3yyzDLbtm0rd+KX7S7m53DgwAEtXbpUixYtKvf458/x6dGjhxITEzVo0CDt3r1bHTp0uPiKV1Flrvuhhx4KruvZs6eio6N13333KSsry7rHdF9Mex88eFBDhw7ViBEjNG7cuDL3ra3tjZKlp6dr8+bNZc4NkaS+ffuqb9++wdf9+vXTZZddprlz5+qJJ55wuprV4qabbgr+vWfPnkpLS1NKSooWLVqksWPH1mDNwmfevHm66aablJSUVGqZutDWtY0jIWbKlCllplFJat++fYWOlZCQUGzGctGdKAkJCaXuc+HkoPz8fJ04caLUfZxwMT+H+fPnq0WLFvrZz35W6fOlpaVJKvzNviY/1KrS/mlpacrPz9fevXvVuXPnYtsTEhKUl5enkydPhvTG5ObmhrVtS1LZ6z506JAGDhyofv366Y9//GOlz1db2rskLVu2VGRkZLG7xspqp4SEhEqVr83uv//+4A0Flf0Nu0GDBurVq5d27drlUO2c16xZM1166aWlXkNdamtJ2rdvnz755JNK94rWhbYuarPc3FwlJiYG1+fm5uqKK64ocZ+LeX8oVaVm0DiovIm9ubm5wXVz5841brfbnD17tsRjFU3s/frrr4Prli5dWusn9gYCAZOammqmTJlyUft/8cUXRpL55z//Wc01C5/XXnvNREREmBMnTpS4vWhi79tvvx1ct337dusm9h44cMB06tTJ3HnnnSY/P/+ijlHb2/vqq682999/f/B1QUGBueSSS8qc2PuTn/wkZF3fvn2tmuwZCARMenq6SUpKMv/6178u6hj5+fmmc+fO5sEHH6zm2oXPqVOnTPPmzc1zzz1X4va60Nbny8zMNAkJCebcuXOV2s/GtlYpE3tnz54dXOf1eis0sbcy7w+l1qdSpR2wb98+s2HDBjNt2jTTpEkTs2HDBrNhwwZz6tQpY0xhI3fv3t3ceOONZuPGjebjjz82rVq1MhkZGcFjrFmzxnTu3NkcOHAguG7o0KGmV69eZs2aNeaLL74wnTp1MiNHjgz79VXGJ598YiSZbdu2Fdt24MAB07lzZ7NmzRpjjDG7du0y06dPN19//bXZs2ePee+990z79u3NtddeG+5qX7RVq1aZZ555xmzcuNHs3r3bvPbaa6ZVq1bmnnvuCZa58LqNMWb8+PGmbdu25tNPPzVff/216du3r+nbt29NXMJFOXDggOnYsaMZNGiQOXDggDl8+HBwOb+M7e29cOFCExMTYxYsWGC2bt1qfv3rX5tmzZoF7zS8++67zdSpU4Pl//GPf5ioqCgze/Zss23bNpOZmWkaNGhgvvnmm5q6hEqbMGGC8Xg8ZsWKFSHt+v333wfLXHjd06ZNM0uXLjW7d+8269atM3feeaeJjY01W7ZsqYlLuChTpkwxK1asMHv27DH/+Mc/zODBg03Lli3NkSNHjDF1s62LFBQUmLZt25pHH3202La60tanTp0KfjZLMk8//bTZsGGD2bdvnzHGmJkzZ5pmzZqZ9957z2zatMnccsstJjU11Zw5cyZ4jOuvv97MmTMn+Lq894eKqvEQc++99xpJxZbPPvssWGbv3r3mpptuMg0bNjQtW7Y0U6ZMCUm8n332mZFk9uzZE1x3/PhxM3LkSNOkSRPjdrvNmDFjgsGotho5cqTp169fidv27NkT8nPZv3+/ufbaa01cXJyJiYkxHTt2NI888ojxer1hrHHVrFu3zqSlpRmPx2NiY2PNZZddZmbMmBHSw3bhdRtjzJkzZ8xvfvMb07x5c9OoUSNz6623hgSA2m7+/Pkl/ps/v2O0rrT3nDlzTNu2bU10dLS5+uqrzZdffhncdt1115l77703pPyiRYvMpZdeaqKjo023bt3MX//61zDXuGpKa9f58+cHy1x43ZMnTw7+jOLj483NN99s1q9fH/7KV8Edd9xhEhMTTXR0tLnkkkvMHXfcYXbt2hXcXhfbusjSpUuNJLNjx45i2+pKWxd9xl64FF1bIBAwf/jDH0x8fLyJiYkxgwYNKvbzSElJMZmZmSHrynp/qCiXMcZUbgAKAACg5tX658QAAACUhBADAACsRIgBAABWIsQAAAArEWIAAICVCDEAAMBKhBgAAGAlQgwAALASIQYAAFiJEAMAAKxEiAEAAFYixAAAACv9f07Ddd/jvrqhAAAAAElFTkSuQmCC\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "ax=plt.axes()\n", + "xlimit=10\n", + "ylimit=10\n", + "plt.axis('equal')# 等轴\n", + "plt.xlim([-xlimit,xlimit])\n", + "plt.ylim([-ylimit,ylimit])\n", + "A=frame2D()\n", + "A.angle=30\n", + "A.show(ax,\"A\",2,\"red\")\n", + "B=frame2D()\n", + "B.angle=0\n", + "B.center=np.array([5,0])\n", + "print(B) \n", + "B.show(ax,\"B\",3,\"blue\")" + ] + } + ], + "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.9.13" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git "a/lesson003python\345\260\201\350\243\205/Lesson003 part2.ipynb" "b/lesson003python\345\260\201\350\243\205/Lesson003 part2.ipynb" new file mode 100644 index 0000000..a1b3761 --- /dev/null +++ "b/lesson003python\345\260\201\350\243\205/Lesson003 part2.ipynb" @@ -0,0 +1,107 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "6d4d0884-df0c-4aa5-b5ff-1b2bb375e13f", + "metadata": {}, + "source": [ + "# Lesson003 part2" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "89730060-5baa-45d3-b04f-a45204876f05", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "center[0 0]\n", + "center+edge[1. 0.5]\n", + "<__main__.frame2D object at 0x000001C52AD1AE80>\n", + "center[0 1]\n", + "center+edge[1. 1.]\n" + ] + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import framelib\n", + "# 将frame绘制等函数移动到framlib当中\n", + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "class frame2D:\n", + " def __init__(self):\n", + " self.center=np.array([0,0])\n", + " self.x_axis=np.array([1,0])\n", + " self.y_axis=np.array([0,1])\n", + " self.angle=0\n", + " def show(self,ax,label,size,color):\n", + " framelib.frame_show_angle_center(label,self.center,self.angle,ax,size)\n", + "ax=plt.axes()\n", + "xlimit=10\n", + "ylimit=10\n", + "plt.axis('equal')# 等轴\n", + "plt.xlim([-xlimit,xlimit])\n", + "plt.ylim([-ylimit,ylimit])\n", + "A=frame2D()\n", + "A.angle=30\n", + "A.show(ax,\"A\",2,\"red\")\n", + "B=frame2D()\n", + "B.angle=0\n", + "B.center=np.array([0,1])\n", + "print(B)\n", + "B.show(ax,\"B\",3,\"blue\")\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "81a4107f-701b-4899-8a00-120d24606118", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "bad47916-2c10-40d9-a585-1cf8501f2a9b", + "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.9.13" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git "a/lesson003python\345\260\201\350\243\205/Lesson003 part3.ipynb" "b/lesson003python\345\260\201\350\243\205/Lesson003 part3.ipynb" new file mode 100644 index 0000000..f42e8d4 --- /dev/null +++ "b/lesson003python\345\260\201\350\243\205/Lesson003 part3.ipynb" @@ -0,0 +1,83 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "id": "42fd8888-bac1-47f4-8022-a8801972d1c6", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "center[0 0]\n", + "center+edge[1. 0.5]\n", + "\n", + "center[1 1]\n", + "center+edge[2. 1.]\n" + ] + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import frameworks as fm\n", + "#进一步将类的封装定义在frameworks当中\n", + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "ax=plt.axes()\n", + "xlimit=10\n", + "ylimit=10\n", + "plt.axis('equal')# 等轴\n", + "plt.xlim([-xlimit,xlimit])\n", + "plt.ylim([-ylimit,ylimit])\n", + "A=fm.frame2D()\n", + "A.angle=30\n", + "A.show(ax,\"A\",2,\"red\")\n", + "B=fm.frame2D()\n", + "B.angle=0\n", + "B.center=np.array([1,1])\n", + "print(B)\n", + "B.show(ax,\"B\",2,\"blue\")\n", + "plt.show()\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "da8238ba-11f4-482e-98d4-18ab8f9a83f1", + "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.9.13" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git "a/lesson003python\345\260\201\350\243\205/framelib.py" "b/lesson003python\345\260\201\350\243\205/framelib.py" new file mode 100644 index 0000000..00c3124 --- /dev/null +++ "b/lesson003python\345\260\201\350\243\205/framelib.py" @@ -0,0 +1,39 @@ +import numpy as np +import matplotlib.pyplot as plt + + +def frame_show(label, Point_A, Point_B, ax, size): + R90 = np.array([[0, -1], [1, 0]]) + Line_AB = Point_B - Point_A + norm_Line_AB = np.linalg.norm(Line_AB) + if norm_Line_AB != 1: + Line_AB = Line_AB / norm_Line_AB * size + ax.arrow(Point_A[0], Point_A[1], Line_AB[0], Line_AB[1], head_width=0.5, length_includes_head=True, color="red") + R90 = np.array([[0, -1], [1, 0]]) # 旋转公式 + Line_AB_Rot90 = R90.dot(Line_AB) # 点乘 + ax.arrow(Point_A[0], Point_A[1], Line_AB_Rot90[0], Line_AB_Rot90[1], head_width=0.5, length_includes_head=True, + color="green") + plt.scatter(Point_A[0], Point_A[1]) + label = "{" + str(label) + "}" + plt.text(Point_A[0], Point_A[1], label) + + +def Rot_func(angle): + angle = np.deg2rad(angle) + R90 = np.array([[0, -1], [1, 0]]) + elem_sim = lambda elem: np.around(elem, 0) if (elem - np.around(elem, 0)) < 1e-10 else elem + A11 = elem_sim(np.cos(angle)) + A12 = elem_sim(-np.sin(angle)) + A21 = elem_sim(np.sin(angle)) + A22 = A11 + Rot = np.array([[A11, A12], [A21, A22]]) + return Rot + + +def frame_show_angle_center(label, center, angle, ax, size): + Rot = Rot_func(angle) + x = np.array([1, 0]) + x = Rot.dot(x) + frame_show(label, center, x + center, ax, size) + print("center" + str(center)) + print("center+edge" + str(x + center)) \ No newline at end of file diff --git "a/lesson003python\345\260\201\350\243\205/frameworks.py" "b/lesson003python\345\260\201\350\243\205/frameworks.py" new file mode 100644 index 0000000..f7a7d85 --- /dev/null +++ "b/lesson003python\345\260\201\350\243\205/frameworks.py" @@ -0,0 +1,11 @@ +import framelib +import numpy as np +import matplotlib.pyplot as plt +class frame2D: + def __init__(self): + self.center=np.array([0,0]) + self.x_axis=np.array([1,0]) + self.y_axis=np.array([0,1]) + self.angle=0 + def show(self,ax,label,size,color): + framelib.frame_show_angle_center(label,self.center,self.angle,ax,size) \ No newline at end of file diff --git "a/lesson003python\345\260\201\350\243\205/lesson003part000\346\200\273\350\247\210" "b/lesson003python\345\260\201\350\243\205/lesson003part000\346\200\273\350\247\210" new file mode 100644 index 0000000..08479a7 --- /dev/null +++ "b/lesson003python\345\260\201\350\243\205/lesson003part000\346\200\273\350\247\210" @@ -0,0 +1,6 @@ +本节主要是通过代码封装中的类方法进行的。 +试着通过本节了解类的使用方法。 +part 1 主要完成类的定义 +part 2 主要完成通过文件导入函数 +part 3 将类也封装到文件当中 +如果有丰富的编程经验建议直接看part 3 diff --git "a/lesson004_\345\212\250\347\224\273/Lesson004.py" "b/lesson004_\345\212\250\347\224\273/Lesson004.py" new file mode 100644 index 0000000..7192100 --- /dev/null +++ "b/lesson004_\345\212\250\347\224\273/Lesson004.py" @@ -0,0 +1,37 @@ +import frameworks as fm +import time +# 进一步将类的封装定义在frameworks当中 +import numpy as np +import matplotlib.pyplot as plt + +prev = fm.frame2D() +tmp_list = [] +step = 1 +for i in range(0, 90, step): + tmp_list.append(fm.frame2D()) + tmp_list[i].angle = i +# run_time_max = 0 +# run_time_max_index = 0 +for i in range(0, 90, step): + plt.clf() + ax = plt.axes() + xlimit = 10 + ylimit = 10 + plt.axis('equal') # 等轴 + + plt.xlim([-xlimit, xlimit]) + plt.ylim([-ylimit, ylimit]) + # start_time = time.time() + tmp_list[i].show(ax, "A", 2, "red") + # end_time = time.time() + # run_time = end_time - start_time + # print(str(i) + ":" + str(run_time)) + # debug + # if run_time_max < run_time: + # run_time_max = run_time + # run_time_max_index = i + + plt.pause(0.1) +# print(run_time_max) +# print(run_time_max_index) +# plt.show() \ No newline at end of file diff --git "a/lesson004_\345\212\250\347\224\273/README.md" "b/lesson004_\345\212\250\347\224\273/README.md" new file mode 100644 index 0000000..9fe4c5f --- /dev/null +++ "b/lesson004_\345\212\250\347\224\273/README.md" @@ -0,0 +1,4 @@ +- 该节中主要利用了matplotlib.pyplot中的clf()函数进行图像清除,利用pause()函数进行暂停设值进行的。 +- 其中主要练习过程当中的debug能力。需要通过测试擦看代码中的错误具体的位置。 +- 相似问题可以通过相同的方法对数学公式或者建模进行检测。 +- 由于jupyterlab中显示动画较为繁琐,请将所有文件放到同一文件夹下。这里我用的是PyCharm打开。 diff --git "a/lesson004_\345\212\250\347\224\273/framelib.py" "b/lesson004_\345\212\250\347\224\273/framelib.py" new file mode 100644 index 0000000..5adb2e6 --- /dev/null +++ "b/lesson004_\345\212\250\347\224\273/framelib.py" @@ -0,0 +1,48 @@ +import numpy as np +import matplotlib.pyplot as plt +def frame_show(label, Point_A, Point_B, ax, size): + R90 = np.array([[0, -1], [1, 0]]) + Line_AB = Point_B - Point_A + norm_Line_AB = np.linalg.norm(Line_AB) + if norm_Line_AB != 1: + Line_AB = Line_AB / norm_Line_AB * size + ax.arrow(Point_A[0], Point_A[1], Line_AB[0], Line_AB[1], head_width=0.5, length_includes_head=True, color="red") + R90 = np.array([[0, -1], [1, 0]]) # 旋转公式 + Line_AB_Rot90 = R90.dot(Line_AB) # 点乘 + ax.arrow(Point_A[0], Point_A[1], Line_AB_Rot90[0], Line_AB_Rot90[1], head_width=0.5, length_includes_head=True, + color="green") + plt.scatter(Point_A[0], Point_A[1]) + label = "{" + str(label) + "}" + plt.text(Point_A[0], Point_A[1], label) + + +def Rot_func(angle): + angle = np.deg2rad(angle) + R90 = np.array([[0, -1], [1, 0]]) + # elem_sim = lambda elem: np.around(elem, 0) if (elem - np.around(elem, 0)) < 1e-16 else elem + # A11 = elem_sim(np.cos(angle)).copy() + # A12 = elem_sim(-np.sin(angle)).copy() + # A21 = elem_sim(np.sin(angle)).copy() + # A22 = A11.copy() + A11=np.cos(angle).copy() + A12=-np.sin(angle).copy() + A21=np.sin(angle).copy() + A22=A11.copy() + Rot = np.array([[A11, A12], [A21, A22]]).copy() + print(np.rad2deg(angle)) + print(np.cos(angle)) + print(np.sin(angle)) + return Rot + + +def frame_show_angle_center(label, center, angle, ax, size): + Rot = Rot_func(angle) + x = np.array([1, 0]) + x = Rot.dot(x) + x_norm=np.linalg.norm(x) + if x_norm!=1: + x=x.copy()/x_norm + frame_show(label, center, x + center, ax, size) + print("angle:"+str(angle)) + print("center" + str(center)) + print("center+edge" + str(x + center)) \ No newline at end of file diff --git "a/lesson004_\345\212\250\347\224\273/frameworks.py" "b/lesson004_\345\212\250\347\224\273/frameworks.py" new file mode 100644 index 0000000..f7a7d85 --- /dev/null +++ "b/lesson004_\345\212\250\347\224\273/frameworks.py" @@ -0,0 +1,11 @@ +import framelib +import numpy as np +import matplotlib.pyplot as plt +class frame2D: + def __init__(self): + self.center=np.array([0,0]) + self.x_axis=np.array([1,0]) + self.y_axis=np.array([0,1]) + self.angle=0 + def show(self,ax,label,size,color): + framelib.frame_show_angle_center(label,self.center,self.angle,ax,size) \ No newline at end of file