我试图在不使用vpython的情况下,在matplotlib中创建具有精确大小和速度的行星的3D太阳系动画模型。我知道了行星的起始位置和模型,但是涉及动画时,我完全迷失了。
我尝试查看一些动画教程,但它们要么 1.使用vpython或使行星旋转 2.在matplotlib中显示动画,但不涉及围绕特定点旋转。
在代码中,我只包含了太阳和汞。如果有人可以用3d matplotlib动画(也许使用FuncAnimation?)演示汞绕太阳旋转,将不胜感激。
谢谢!
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt
import numpy as np
import matplotlib.animation as ani
from matplotlib.animation import FuncAnimation
import math
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
c1=1000
ax.set_xlim(-1300000000,1300000000)
ax.set_ylim(-1300000000,1300000000)
ax.set_zlim(-1300000000,1300000000)
#sun
rs=10000*c1
u = np.linspace(0, 2 * np.pi, 100)
v = np.linspace(0, np.pi, 100)
xs = rs*np.outer(np.cos(u), np.sin(v))
ys = rs*np.outer(np.sin(u), np.sin(v))
zs = rs*np.outer(np.ones(np.size(u)), np.cos(v))
sun=ax.plot_surface(xs, ys, zs, rstride=4, cstride=4, color='y')
#mercury
dmer=57900000
rmer=2440*c1
xmer=rmer*np.outer(np.cos(u), np.sin(v)) +dmer
ymer=rmer*np.outer(np.sin(u), np.sin(v))
zmer=rmer*np.outer(np.ones(np.size(u)), np.cos(v))
mercury=ax.plot_surface(xmer, ymer, zmer, rstride=4, cstride=4, color='r')
plt.show()