{ "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", "import math\n", "import matplotlib.pyplot as plt\n", "import matplotlib.animation as animation\n", "from scipy import interpolate\n", "from scipy.misc import derivative\n", "from scipy.optimize import newton\n", "g=9.81" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "\n", "# Positions du point initiale dans l'espace (x,y)\n", "# toujours définir hauter a 0 ! \n", "# Dimensions en m mais necessaire de resize dans inkscape arpes!\n", "A=np.array([0.,0.])\n", "# Positons du point final dans l'espace (x,y)\n", "B=np.array([0.5,-0.08])\n", "\n", "# Trajectoire linéaire\n", "def func1(x):\n", " a=(B[1]-A[1])/(B[0]-A[0])\n", " return(a*x+A[0])\n", "\n", "def dfunc1(x):\n", " a=(B[1]-A[1])/(B[0]-A[0])\n", " return(a)\n", "\n", "# trajectoire parabolique\n", "def func2(x):\n", " a=1.2\n", " c=A[1]\n", " b=(B[1]-A[1])/B[0]-a*B[0]\n", " return(a*x**2+b*x+c)\n", "\n", "def dfunc2(x):\n", " a=1.2\n", " b=(B[1]-A[1])/B[0]-a*B[0]\n", " return(2.*a*x+b)\n", "\n", "# Definition courbe optimal: Brachistochrone\n", "def find_theta_for_brach():\n", " def f(theta):\n", " return abs(-B[1]/B[0] - (1.-np.cos(theta))/(theta-np.sin(theta)))\n", " thetab=newton(f,np.pi/2.)\n", " return(thetab)\n", "\n", "def brach_(theta2,N=100):\n", " R = B[1] / (1 - np.cos(theta2))\n", " theta = np.linspace(0, theta2, N)\n", " x = R * (theta - np.sin(theta))\n", " y = R * (1 - np.cos(theta))\n", " return -x, y\n", "\n", "theta_b=find_theta_for_brach()\n", "xb,yb=brach_(theta_b,N=400)\n", "fbrach=interpolate.interp1d(xb,yb,kind='linear')\n", "def brach(x):\n", " if x<=B[0] and x>=A[0]:\n", " return(fbrach(x))\n", " else:\n", " if x>B[0]:\n", " return(B[0])\n", " else:\n", " return(A[0])\n", "brachv=np.vectorize(brach)\n", "\n", "def dbrach(x,step=0.0001):\n", " if x+step<=B[0] and x-step>=A[0]:\n", " return( (fbrach(x+step)-fbrach(x-step))/2./step)\n", " else:\n", " if x+step>B[0]:\n", " return((yb[-1]-fbrach(x-step))/step)\n", " else:\n", " return((fbrach(x+step)-yb[0])/step)\n" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "# Trajectoire: decroissance exponnentielle\n", "def func3(x):\n", " return((B[1]-A[1])*(1.-np.exp(-x*40.))+A[1])\n", "\n", "def dfunc3(x,step=0.001):\n", " if x+step<=B[0] and x-step>=A[0]:\n", " return( (func3(x+step)-func3(x-step))/2./step)\n", " else:\n", " if x+step>B[0]:\n", " return((func3(x)-func3(x-step))/step)\n", " else:\n", " return((func3(x+step)-func3(x))/step)" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "def get_normals(xb,yb,length=-.1):\n", " xx=np.zeros(len(xb)-1)\n", " yy=np.zeros(len(yb)-1)\n", " for idx in range(len(xb)-1):\n", " x0, y0, xa, ya = xb[idx], yb[idx], xb[idx+1], yb[idx+1]\n", " dx, dy = xa-x0, ya-y0\n", " norm = math.hypot(dx, dy) * 1/length\n", " dx /= norm\n", " dy /= norm\n", " xx[idx]=x0-dy\n", " yy[idx]=y0+dx\n", " return(xx,yy)\n", "\n", "def get_courb(xb,yb,length=-.1):\n", " xbn,ybn=get_normals(xb,yb,length=length)\n", " xx=[]\n", " yy=[]\n", " for i in range (len(xbn)):\n", " #if ybn[i]<=(A[1]):\n", " if True:\n", " xx.append(xbn[i])\n", " yy.append(ybn[i])\n", " xx=np.array(xx)\n", " yy=np.array(yy)\n", " return(xx,yy)" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAgMAAAGFCAYAAABg2vAPAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8qNh9FAAAACXBIWXMAAA9hAAAPYQGoP6dpAABR20lEQVR4nO3dd3RU1d7G8e+kFwhJCARIQFqA0EukSceCNBVUFFCxoIKCevW1i3q99g4qIohwBfUKYkVA6dJ7D4QSIKEEAoH0Pu8fO5kkJKEopJ3ns9ZZyczsM3OGMueZfX57b5vdbrcjIiIiluVU2gcgIiIipUthQERExOIUBkRERCxOYUBERMTiFAZEREQsTmFARETE4hQGRERELE5hQERExOIUBkRERCxOYUBERMTiFAZEREQsTmFARETE4hQGRERELE5hQERExOIUBkRERCxOYUBERMTiFAZEREQsTmFARETE4hQGRERELE5hQERExOIUBkRERCxOYUBERMTiFAZEREQsTmFARETE4hQGRERELE5hQERExOIUBkRERCxOYUBERMTiFAZEREQsTmFARETE4hQGRERELE5hQERExOIUBkRERCxOYUBERMTiFAZEREQsTmFARETE4hQGRERELE5hQERExOIUBkRERCxOYUBERMTiFAZEREQsTmFARETE4hQGRERELE5hQERExOIUBkRERCxOYUBERMTiFAZEREQsTmFARETE4hQGRERELE5hQERExOIUBkRERCxOYUBERMTiFAZEREQsTmFARETE4hQGRERELE5hQERExOIUBkRERCxOYUBERMTiFAZEREQsTmFARETE4hQGRERELE5hQERExOIUBkRERCxOYUBERMTiFAZEREQsTmFARETE4hQGRERELE5hQERExOIUBkRERCxOYUBERMTiFAZEREQsTmFARETE4hQGRERELE5hQERExOIUBkRERCxOYUBERMTiFAZEREQsTmFARETE4hQGRERELE5hQERExOIUBkRERCxOYUBERMTiFAZEREQsTmFARETE4hQGRERELE5hQERExOIUBkRERCxOYUBERMTiFAZEREQsTmFARETE4hQGRERELE5hQERExOIUBkRERCxOYUBERMTiFAZEREQsTmFARETE4hQGRERELM6lNF88Ozub2ORYALxcvbDZbJftuS/384mIiFRUpRoG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+jRVq1YttE9uXcJtt93G888/77g/IyMDV12qlIugMHABY34fwyfrPyHQO5CtD28lsFIg6z5dx7xH5wEQNjqMG2/xxGlgfwgMhE2bHGsY2O129v/wAxvfeouslBRcfXwIe+EF6vbrpyFIIqWkvNYlACQlJRVYEXL37t2OdRwARo8ezaeffgpAQkIC/v7+1K9fv0AvQu7kSqpLkPwUBi4gJSOFDlM6sP3Edq5vcD3zhs3DyebEmo/XsOCJBWCHhtdexa373sL94B4YOBB++qnAV4j4Q4dY/cwznNq+HYBeU6ZQo1OnUnpHIlKc8l6XEBQURLt27QBYv3497du3L3a/J598kvfeew8wlypWr15N06ZNNV+CRSkMXIRdJ3cR9kUYKZkpvHPtO/zfNf8HwO6fdjNn2BwykjOo3qAydx5+E9+MWLPK4TPPFHiO7IwMdn35JbFbt9L9s88c/9myMzM1SZFIGVce6xLOt45DTEwMH3zwAU888QQAW7dupXXr1kDBdRxyexHatWvnWPdBKiaFgYs0eeNkHvztQVycXFh13yquDroagKMbj/LtgG9JPJaIt48Td8R/QbDtiJm6+MYbCz2P3W53BIH0+HjmDR5MUK9ehN5zj1Y/FCln/m5dQnBw4YBQ0nUJNpsN35yh0MuWLePee+8tch0HgLfeeotncr7gREVFMW3aNK3jUMEoDFwku93OkNlDmLVrFvX96rNh5Ab8PM3xno06y7f9vyVmWwxONjvd7Uvo4rMNp3VrTP9hMXZPn86md94BwObiQt1+/Qi97z58GzYskfckIldGea1LOHcdh9zt7bffpm/fvgDMmTOHwYMHO/bJv45DaGgod9xxB61atbryByuXlcLAJTiTeoY2k9pw8MxB+jfqz893/IyTzfwPTUtI49cHfmXn9zsBCCaKW4Z64j9zQrHPZ7fbiVmzhp2TJxOzdq3j/oDWral/yy3U7dsXFy+vK/umRKRElce6hPxWr17NpEmTCq3jkGvWrFnceuutACxevJg333yz0DoO1atXV11CGaMwcIk2HdvENVOvITUzlVd7vMq47uMcj9ntdrZ/s53fR88lLT4dVy9XbvjwBtqObHvBf/ix27YRPnUq0YsXY8/KwsnFhZuXLsUj38gE/ecRqbgqSl3CU089Rf369QF45513HJcX8vPz8yM0NJQPPviADh06AKaI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3+12O5nZmWRkZ5CZnVloS89KJzE9kaSMJBLTE83v6Xm/J6YnEp8Wf95v8kXxcfch2CeYoMpBBPkEUc+3njnx5wSAAK8Ay/SUiFwqhQGRcsjP0492ngXrEfJLyUjhaMJRjiQcMT/jj3As8RinUk5xKvlUgZ+nU06Tbc92nIjLEl8PX0dvRoBXgKMno5pXNYJ8ggiqHGQCgE8QldwqlfbhipRbCgMiFZCnq6f5Ruzf4IJts+3ZnE09y6mUU8SnxZOUnuT41p77e+439+SMZLLsWWRmZ5KVneX4tp97X2Z2Jk42pwK9B65OrgVvO7s6ehwquVVybPl7Ivw8/fD39MfFSR9RIiVB/9NELM7J5oSfpx9+nhraK2JVWg9TRETE4hQGRERELE5hQERExOIUBkRERCxOYUBERMTiFAZEREQsTmFARETE4hQGRERELE5hQERExOIUBkRERCxOYUBERMTiFAZEREQsTmFARETE4hQGRERELE5hQERExOIUBkRERCxOYUBERMTiFAZEREQsTmFARETE4hQGRERELE5hQERExOIUBkRERCxOYUBERMTiFAZEREQsTmFARETE4hQGRERELE5hQERExOIUBkRERCxOYUBERMTiFAZEREQsTmFARETE4hQGRERELE5hQERExOIUBkRERCxOYUBERMTiFAZEREQsTmFARETE4hQGRERELM6lNF88K8vu+P340bOleCQiIiIlL/+5L/85saSVahg4GRPv+P23DtNL8UhERERK18mYeOpc5V8qr63LBCIiIhZns9vtpdYvkZ6eyfYt0QBUC/TB2dlWWociIiJS4rKy7I5e8hatg3FzK50O+1INAyIiIlL6dJlARETE4hQGRERELE5hQERExOIUBkRERCxOYUBERMTiFAZEREQsTmFARETE4hQGRERELE5hQERExOIUBkRERCxOYUBERMTiFAZEREQsTmFARETE4hQGRERELE5hQERExOIUBkRERCxOYUBERMTiFAZEREQsTmFARETE4hQGRERELE5hQERExOIUBkRERCxOYUBERMTiFAZEREQsTmFARETE4hQGRERELE5hQERExOIUBkRERCxOYUBERMTiFAZEREQsTmFARETE4hQGRERELE5hQERExOIUBkRERCxOYUBERMTiFAZEREQsTmFARETE4hQGRERELE5hQERExOIUBkRERCxOYUBERMTiFAZEREQsTmFARETE4hQGRERELE5hQERExOIUBkRERCxOYUBERMTiFAZEREQsTmFARETE4hQGRERELE5hQERExOIUBkRERCxOYUBERMTiFAZEREQsTmFARETE4hQGRERELE5hQERExOIUBkRERCxOYUBERMTiFAZEREQsTmFARETE4hQGRERELE5hQERExOIUBkRERCxOYUBERMTiFAZEREQsTmFARETE4hQGRERELE5hQERExOIUBkRERCxOYUBERMTiFAZEREQsTmFARETE4hQGRERELE5hQERExOIUBkRERCxOYUBERMTiFAZEREQsTmFARETE4hQGRERELE5hQERExOIUBkRERCxOYUBERMTiFAZEREQsTmFARETE4hQGRERELE5hQERExOIUBkRERCxOYUBERMTiFAZEREQsTmFARETE4hQGRERELE5hQERExOIUBkRERCxOYUBERMTiFAZEREQsTmFARETE4hQGRERELO7/Ac9X16Nr3gW+AAAAAElFTkSuQmCC", "text/plain": [ "<Figure size 640x480 with 1 Axes>" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "xx=np.linspace(A[0],B[0],100)\n", "fig, ax = plt.subplots()\n", "\n", "# Plot la trajectoire du brachi\n", "ax.plot(xb,yb,'--',c='red')\n", "\n", "#Plot du support pour la trajectoire\n", "bot=-0.235\n", "R_bille=0.009\n", "pente_init=0.0\n", "thick=0.025\n", "L_t=B[0]-A[0]\n", "xbn,ybn=get_courb(xb,yb,length=-R_bille)\n", "ax.plot(xbn,ybn,c='green')\n", "ax.plot([-thick-np.abs(np.min(xbn)),-thick-np.abs(np.min(xbn))],[ybn[0],bot],c='green')\n", "ax.plot([-thick-np.abs(np.min(xbn)),np.min(xbn)],[pente_init,0.],c='green')\n", "Lg=-thick-np.abs(np.min(xbn))\n", "Ld=np.abs(np.max(xbn))+thick\n", "ax.plot([np.max(xbn),np.max(xbn)+thick],[ybn[-1],ybn[-1]],c='green')\n", "ax.plot([-thick-np.abs(np.min(xbn)),np.abs(np.max(xbn))+thick],[bot,bot],c='green')\n", "ax.plot([np.abs(np.max(xbn))+thick,np.abs(np.max(xbn))+thick],[bot,ybn[-1]],c='green')\n", "\n", "\n", "#Plot la trajectoire lineaire\n", "xL=np.linspace(A[0],B[0],1000)\n", "yL=func1(xL)\n", "ax.plot(xL,yL,'--',c='black')\n", "\n", "#Plot du support pour la trajectoire\n", "bot=-0.235\n", "R_bille=0.009\n", "pente_init=0.0\n", "thick=0.025\n", "L_t=B[0]-A[0]\n", "xbn,ybn=get_courb(xL,yL,length=-R_bille)\n", "ax.plot(xbn,ybn,c='blue')\n", "ax.plot([Lg,Lg],[ybn[0],bot],c='blue')\n", "ax.plot([Lg,np.min(xbn)],[ybn[0],ybn[0]],c='blue')\n", "ax.plot([np.max(xbn),Ld],[ybn[-1],ybn[-1]],c='blue')\n", "ax.plot([Lg,Ld],[bot,bot],c='blue')\n", "ax.plot([Ld,Ld],[bot,ybn[-1]],c='blue')\n", "ax.axis('equal')\n", "ax.axis('off')\n", "\n", "#Plot la trajectoire exponentielle\n", "xL=np.linspace(A[0],B[0],100)\n", "yL=func3(xL)\n", "ax.plot(xL,yL,'--',c='brown')\n", "\n", "bot=-0.235\n", "R_bille=0.009\n", "pente_init=0.0\n", "thick=0.025\n", "L_t=B[0]-A[0]\n", "xbn,ybn=get_courb(xL,yL,length=-R_bille)\n", "ax.plot(xbn,ybn,c='purple')\n", "ax.plot([Lg,Lg],[ybn[0],bot],c='purple')\n", "ax.plot([Lg,np.min(xbn)],[ybn[0],ybn[0]],c='purple')\n", "ax.plot([np.max(xbn),Ld],[ybn[-1],ybn[-1]],c='purple')\n", "ax.plot([Lg,Ld],[bot,bot],c='purple')\n", "ax.plot([Ld,Ld],[bot,ybn[-1]],c='purple')\n", "ax.axis('equal')\n", "ax.axis('off')\n", "# Enregistre toutes les trajectoires. Plus partique pour l'utilisation utltérieure dans inkscape.\n", "fig.savefig('brach_brahc.svg',format='svg')\n", "plt.show()" ] }, { "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "Une fois les figures enregistrés, les ouvrir avec inkscape.\n", "\n", "Redimensionner dans inkscape en fonction des tailles souhaitées.\n", "\n", "Placer les découpes nécessaires à l'assemblage: trous pour vis, entaille pour support etc.. Voir fichier \"Exemple_trajectoires.svg\"\n", "\n", "Ouvrir les trajectoires dans différents documents inkscape. Supprimer les trajectoires en pointillés. Et mettre les découpes en rouge: rgb=(255,0,0)\n", "\n", "Les supports sont prets pour découpe laser." ] }, { "cell_type": "code", "execution_count": 67, "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "<Figure size 640x480 with 1 Axes>" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Enregistre le Brahc au format svg\n", "\n", "xx=np.linspace(A[0],B[0],100)\n", "fig, ax = plt.subplots()\n", "ax.plot(xb,yb,'--',c='red')\n", "bot=-0.235\n", "R_bille=0.009\n", "pente_init=0.0\n", "thick=0.025\n", "L_t=B[0]-A[0]\n", "xbn,ybn=get_courb(xb,yb,length=-R_bille)\n", "ax.plot(xbn,ybn,c='green')\n", "ax.plot([-thick-np.abs(np.min(xbn)),-thick-np.abs(np.min(xbn))],[ybn[0],bot],c='green')\n", "ax.plot([-thick-np.abs(np.min(xbn)),np.min(xbn)],[pente_init,0.],c='green')\n", "Lg=-thick-np.abs(np.min(xbn))\n", "Ld=np.abs(np.max(xbn))+thick\n", "ax.plot([np.max(xbn),np.max(xbn)+thick],[ybn[-1],ybn[-1]],c='green')\n", "ax.plot([-thick-np.abs(np.min(xbn)),np.abs(np.max(xbn))+thick],[bot,bot],c='green')\n", "ax.plot([np.abs(np.max(xbn))+thick,np.abs(np.max(xbn))+thick],[bot,ybn[-1]],c='green')\n", "\n", "ax.axis('equal')\n", "ax.axis('off')\n", "\n", "fig.savefig('brach.svg',format='svg')" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAgMAAAGFCAYAAABg2vAPAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8qNh9FAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAcWUlEQVR4nO3de3TU9Z3/8ddccyUXCBBCApSLBuQuIlLFRdZVbL2xePCyurS1uyp6dGtbD91jj+2uuv2JS6vdXtTVdt1jXbuK/rAoXqiKIsitRGi43wKBQEKuk8tkZr77x4QhYTJRC8xg3s/HOXMyM993Zj6BwDzznW9mXI7jOAIAAGa5U70AAACQWsQAAADGEQMAABhHDAAAYBwxAACAccQAAADGEQMAABhHDAAAYBwxAACAccQAAADGEQMAABhHDAAAYBwxAACAccQAAADGEQMAABhHDAAAYBwxAACAccQAAADGEQMAABhHDAAAYBwxAACAccQAAADGEQMAABhHDAAAYBwxAACAccQAAADGEQMAABhHDAAAYBwxAACAccQAAADGEQMAABhHDAAAYBwxAACAccQAAADGEQMAABhHDAAAYBwxAACAccQAAADGEQMAABhHDAAAYBwxAACAccQAAADGEQMAABhHDAAAYBwxAACAccQAAADGEQMAABhHDAAAYBwxAACAccQAAADGEQMAABhHDAAAYBwxAACAccQAAADGEQMAABhHDAAAYBwxAACAccQAAADGEQMAABhHDAAAYBwxAACAccQAAADGEQMAABhHDAAAYBwxAACAccQAAADGEQMAABhHDAAAYBwxAACAccQAAADGEQMAABhHDAAAYBwxAACAccQAAADGEQMAABhHDAAAYBwxAACAccQAAADGEQMAABhHDAAAYBwxAACAccQAAADGEQMAABhHDAAAYBwxAACAccQAAADGEQMAABhHDAAAYBwxAACAccQAAADGEQMAABhHDAAAYBwxAACAccQAAADGEQMAABhHDAAAYBwxAACAccQAAADGEQMAABhnJgZaa2q07pFH9M7f/70cx0n1cgAAOGt4U3nnkUhEzdXNkiRfpk8ul+vUbi8c0f6V+xWoCmjiNyZ2uT1Perp2/e//KtzWptqtW9V39OhTui8AAHqLlMZAc3WzHh/4+Bm57dI5pcrIy4hd9mVlqejSS1Xx1lva94c/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", "text/plain": [ "<Figure size 640x480 with 1 Axes>" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Enregistre la courbe expo\n", "xL=np.linspace(A[0],B[0],100)\n", "fig, ax = plt.subplots()\n", "yL=func3(xL)\n", "ax.plot(xL,yL,'--',c='brown')\n", "\n", "bot=-0.235\n", "R_bille=0.009\n", "pente_init=0.0\n", "thick=0.025\n", "L_t=B[0]-A[0]\n", "xbn,ybn=get_courb(xL,yL,length=-R_bille)\n", "ax.plot(xbn,ybn,c='purple')\n", "ax.plot([Lg,Lg],[ybn[0],bot],c='purple')\n", "ax.plot([Lg,np.min(xbn)],[ybn[0],ybn[0]],c='purple')\n", "ax.plot([np.max(xbn),Ld],[ybn[-1],ybn[-1]],c='purple')\n", "ax.plot([Lg,Ld],[bot,bot],c='purple')\n", "ax.plot([Ld,Ld],[bot,ybn[-1]],c='purple')\n", "\n", "ax.axis('equal')\n", "ax.axis('off')\n", "fig.savefig('expo.svg',format='svg')" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "<Figure size 640x480 with 1 Axes>" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Enregistre la courbe lineaire\n", "xL=np.linspace(A[0],B[0],1000)\n", "yL=func1(xL)\n", "fig, ax = plt.subplots()\n", "ax.plot(xL,yL,'--',c='black')\n", "\n", "bot=-0.235\n", "R_bille=0.009\n", "pente_init=0.0\n", "thick=0.025\n", "L_t=B[0]-A[0]\n", "xbn,ybn=get_courb(xL,yL,length=-R_bille)\n", "ax.plot(xbn,ybn,c='blue')\n", "ax.plot([Lg,Lg],[ybn[0],bot],c='blue')\n", "ax.plot([Lg,np.min(xbn)],[ybn[0],ybn[0]],c='blue')\n", "ax.plot([np.max(xbn),Ld],[ybn[-1],ybn[-1]],c='blue')\n", "ax.plot([Lg,Ld],[bot,bot],c='blue')\n", "ax.plot([Ld,Ld],[bot,ybn[-1]],c='blue')\n", "ax.axis('equal')\n", "ax.axis('off')\n", "plt.fig.savefig('lin.svg',format='svg')" ] }, { "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "Ci après: résolution numérique des equations du mouvement pour trajectoires quelconques" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [], "source": [ "def solver_inv(func,dfunc):\n", " dt=0.01\n", " Y=[B[1]]\n", " X=[B[0]]\n", " T=[0]\n", " while Y[-1]<A[1]:\n", " dxdt=np.sqrt(2.*g*(A[1]-Y[-1]))/np.sqrt(1.+dfunc(X[-1])**2)\n", " X_s=X[-1]-dt*dxdt\n", " X.append(X_s)\n", " Y.append(func(X_s))\n", " tt=T[-1]\n", " T.append(tt+dt)\n", " return(np.flip(np.array(X)),np.flip(np.array(Y)),np.array(T))" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [], "source": [ "X1,Y1,T1=solver_inv(func1,dfunc1)\n", "X2,Y2,T2=solver_inv(func3,dfunc3)\n", "X3,Y3,T3=solver_inv(brach,dbrach)" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "79 49 43\n" ] } ], "source": [ "N_2=len(T2)\n", "N_1=len(T1)\n", "N_3=len(T3)\n", "print(N_1,N_2,N_3)\n", "N_frames=np.max([N_1,N_2,N_3])\n", "if N_frames==N_1:\n", " T=T1\n", "else:\n", " if N_frames==N_2:\n", " T=T2\n", " else:\n", " T=T3" ] }, { "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "Enregistrer la dynamique des trajectoire au format gif." ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "<Figure size 640x480 with 1 Axes>" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fig = plt.figure()\n", "ax = fig.add_subplot(111)\n", "pad_title=10\n", "size_title=10\n", "dl=0.2\n", "ax.set_xlim(A[0]-0.1,B[0]+0.1)\n", "ax.set_ylim(B[1]-dl,A[1]+0.1)\n", "ax.set_xlabel('x [m]',fontsize=size_title)\n", "ax.set_ylabel('y [m]',fontsize=size_title)\n", "ax.plot(A[0],A[1],c='black')\n", "ax.plot(B[0],B[1],c='black')\n", "xx=np.linspace(A[0],B[0],100)\n", "f1=func1(xx)\n", "f2=func3(xx)\n", "def animate(i):\n", " ax.clear()\n", " ax.set_xlim(A[0]-0.1,B[0]+0.1)\n", " ax.set_ylim(B[1]-dl,A[1]+0.1)\n", " ax.set_xlabel('x [m]',fontsize=size_title)\n", " ax.set_ylabel('y [m]',fontsize=size_title)\n", " ax.set_title(r'T= '+str(int(T[i]*100)/100)+' [s]')\n", " ax.plot(A[0],A[1],c='black')\n", " ax.plot(B[0],B[1],c='black')\n", " ax.plot(xx,f1,'-',lw=0.8,color='black')\n", " ax.plot(xx,f2,'-',lw=0.8,color='black')\n", " ax.plot(xb,yb,'-',lw=0.8,color='black')\n", " props = dict(boxstyle='round', facecolor='None')\n", " ax.text(B[0]-0.2, A[1]-thick, 'T= '+str(int(T[N_1-1]*100)/100)+' [s]',c=\"red\" ,fontsize=10, bbox=props)\n", " ax.text(B[0]-0.2, A[1]-0.15, 'T= '+str(int(T[N_2-1]*100)/100)+' [s]',c=\"blue\" ,fontsize=10, bbox=props)\n", " ax.text(B[0]-0.2, A[1]-0.25, 'T= '+str(int(T[N_3-1]*100)/100)+' [s]',c=\"green\" ,fontsize=10, bbox=props)\n", " if i<N_1:\n", " ax.plot(X1[i],Y1[i],marker='.',markersize=10,color='red')\n", " else:\n", " ax.plot(X1[N_1-1],Y1[N_1-1],marker='.',markersize=10,color='red')\n", " if i<N_2:\n", " ax.plot(X2[i],Y2[i],marker='.',markersize=10,color='blue')\n", " else:\n", " ax.plot(X2[N_2-1],Y2[N_2-1],marker='.',markersize=10,color='blue')\n", " if i<N_3:\n", " ax.plot(X3[i],Y3[i],marker='.',markersize=10,color='green')\n", " else:\n", " ax.plot(X3[N_3-1],Y3[N_3-1],marker='.',markersize=10,color='green')\n", "\n", "ani = animation.FuncAnimation(fig, animate, frames=N_frames,repeat=True)\n", "ani.save(\"mvt.gif\", writer=animation.PillowWriter(fps=20))\n", "plt.show()" ] } ], "metadata": { "kernelspec": { "display_name": "base", "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" }, "orig_nbformat": 4, "vscode": { "interpreter": { "hash": "e31183931751eda2e0bcd16cd090e11999f89a970f894b51aa143d84b0eac660" } } }, "nbformat": 4, "nbformat_minor": 2 }