Я пытаюсь создать анимированную 3d модель солнечной системы с точными размерами и скоростями планет в matplotlib без использования vpython. У меня есть стартовые локации и модели планет вниз, но когда дело доходит до анимации, я полностью потерян.
Я пытался посмотреть некоторые уроки анимации, но они либо
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()