Как анимировать трехмерные сферы в matplotlib, чтобы они вращались вокруг центральной точки? - PullRequest
0 голосов
/ 01 июня 2019

Я пытаюсь создать анимированную 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()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...