Tutaj mam równanie parametryczne.Python - Wykreślanie wektorów prędkości i przyspieszenia w pewnych punktach
import matplotlib.pyplot as plt
import numpy as np
from mpl_toolkits.mplot3d import Axes3D
t = np.linspace(0,2*np.pi, 40)
# Position Equation
def rx(t):
return t * np.cos(t)
def ry(t):
return t * np.sin(t)
# Velocity Vectors
def vx(t):
return np.cos(t) - t*np.sin(t)
def vy(t):
return np.sin(t) + t*np.cos(t)
# Acceleration Vectors
def ax(t):
return -2*np.sin(t) - t*np.cos(t)
def ay(t):
return 2*np.cos(t) - t*np.sin(t)
fig = plt.figure()
ax1 = fig.gca(projection='3d')
z = t
ax1.plot(rx(z), r(z), z)
plt.xlim(-2*np.pi,2*np.pi)
plt.ylim(-6,6)
ax.legend()
Więc mam to równanie parametryczne, które tworzy ten wykres.
Mam zdefiniowane moje prędkości i przyspieszenia parametryczne równania powyżej w moim kodu.
Co chcę zrobić, to wykreślić wektory przyspieszenia i prędkości na powyższym wykresie pozycji w określonych punktach. (Id est, t = pi/2, 3pi/2, 2pi)
coś takiego:
Python/matplotlib : plotting a 3d cube, a sphere and a vector?
ale chcę zrobić coś więcej proste, ponieważ mam do definiowania każdy punkt t w dwa równania.
Czy coś takiego jest możliwe? Mogę tylko znaleźć pola wektorowe, a co nie.
Dziękuję.
Edit Pytanie
# t = pi/4
t_val_start_pi4 = np.pi/4
vel_start_pi4 = [rx(t_val_start_pi4), ry(t_val_start_pi4), t_val_start_pi4]
vel_end_pi4 = [rx(t_val_start_pi4) + vx(t_val_start_pi4), ry(t_val_start_pi4)+vy(t_val_start_pi4), t_val_start_pi4 ]
vel_vecs_pi4 = (t_val_start_pi4 , vel_end_pi4)
vel_arrow_pi4 = Arrow3D(vel_vecs_pi4[0],vel_vecs_pi4[1], vel_vecs_pi4[2], mutation_scale=20, lw=1, arrowstyle="-|>", color="b")
axes.add_artist(vel_arrow_pi4)
To da mi błąd mówiąc Tuple out of index
Poniżej przedstawiono jak rysować strzałki. Kiedy obliczysz położenie ogona wektora, długość wektora, kierunek wektora i zdecydujesz o stylu wektora, możesz go użyć do narysowania wektora: http://matplotlib.org/examples/pylab_examples/arrow_simple_demo.html – boardrider
, więc czy pierwsze zero reprezentuje położenie ogonów, a następne przedstawia długość wektorów? 'ax.arrow (0, 0, 0.5, 0.5, head_width = 0.05, head_length = 0.1, fc = 'k', ec = 'k')' – DarthLazar
@DarthLazar - Zapoznaj się z [dokumentacją] (http: // matplotlib .org/api/axes_api.html # matplotlib.axes.Axes.arrow) dla tej metody –