En utilisant la méthode ArtistAnimation de matplotlib, Le mouvement d'un objet qui effectue un mouvement parabolique est affiché avec une trajectoire. Ici, ** une méthode d'affichage de deux images de la partie de lieu et de la partie mobile de l'objet de manière superposée ** a été utilisée. ** C'est un moyen simple et facile de réfléchir pour tout le monde, mais cela peut être utile lorsque vous souhaitez une visualisation rapide. .. ** **
** C'est un problème de projection verticale dans la direction du champ de gravité uniforme dans la direction $ y $ et la direction $ \ theta $. ** **
Lorsque le temps $ t = 0 $, la position du point de qualité est $ (x_0, y_0) $, et la grandeur de la vitesse initiale est $ V_0 $. ) $ Les coordonnées sont les suivantes. Le mouvement de ce point de qualité trace une ligne parabolique.
Dans ce problème, définissez $ V_0 = 100 $ m / s, $ (x_0, y_0) = (0, 0) $, $ \ theta = \ pi / 4 $ (= 45 degrés) pour dessiner le mouvement du point de qualité. ..
locus.py
"""
Mouvement parabolique animé avec une trajectoire
Animation with a locus
"""
import matplotlib.pyplot as plt
%matplotlib nbagg # Jupyter-Ajouter lors de l'affichage de l'animation dans le notebook
from matplotlib.animation import ArtistAnimation #Importer des méthodes pour créer des animations
import numpy as np
fig = plt.figure()
anim = [] #Une liste pour stocker les données du diagramme para-para dessiné pour l'animation
tt = np.arange(0,15,0.5) #Réglage de l'heure pour le dessin: t=0 de 0 à 15.En 5 incréments.
x_all=[] #Liste de stockage des données à toutes les x positions
y_all=[] #Liste pour stocker les données de toutes les positions y
#Définition des conditions initiales
V0 =100 #L'amplitude de la vitesse initiale: 100 m/s
theta=np.pi/4
x0=0 #Position initiale: x=0
y0=0 #Position initiale: y = 0
g=9.8 #Constante de gravité[m/s^2]
for t in tt:
x= [V0*np.cos(theta)*t+x0] # x(t)Description de
y = [-( g/2)*t**2+V0*np.sin(theta)*t+y0] # y(t)Description de
x_all.append(x[0]) #Stocke les données à chaque instant de x
y_all.append(y[0]) #Stockez vos données à chaque instant
#Créez deux images, le point de qualité au temps t et le lieu du mouvement jusqu'au temps t, et enregistrez-les dans la liste pour l'animation.
im=plt.plot(x,y,'o', x_all,y_all, '--', color='red',markersize=10, linewidth = 2, aa=True)
anim.append(im)
anim = ArtistAnimation(fig, anim) #Création d'animation
#Dessiner la personnalisation
plt.xlabel('X',fontsize=18) #
plt.ylabel('Y',fontsize=18)
plt.xlim(0, 1100)
plt.ylim(-10,300)
plt.hlines([0], 0, 2000, linestyles="-") # y=Tracez une ligne à 0.
fig.show()
anim.save("t.gif", writer='imagemagick') #Animation.Enregistrez-le en tant que gif et créez un fichier d'animation gif.
Une animation du mouvement du gage lorsqu'il est lancé à une vitesse initiale de 100 m / s dans une direction oblique de 45 degrés avec une trajectoire.
3 août 2017: ** Masse supprimée m en y (t) **. Merci à T_Shinaji pour l'avoir signalé!
10 août 2017: Changement de anim.save ("t.gif") à ** anim.save ("t.gif", writer = 'imagemagick') **. Merci à yoddy pour l'avoir signalé!
Pour l'animation d'artiste, chez_sugi Animation avec matplotlib J'ai été autorisé à faire référence.
Recommended Posts