如何在matplotlib中为3d球制作动画,使其围绕中心点旋转?

时间:2019-06-01 14:37:25

标签: python numpy matplotlib animation 3d

我试图在不使用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()

0 个答案:

没有答案