2015-03-10 3 views
-2

Я хотел бы, чтобы превратить это 2D анимации, вращающихся вокруг планет в 3D-анимации, чтобы визуализировать траектории в 3D, и, если возможно, добавьте след к траекториям:2D анимации в 3D-анимации

import numpy as np 
from matplotlib import pyplot as plt 
from matplotlib import animation 

fig = plt.figure() 
fig.set_dpi(100) 
fig.set_size_inches(7, 6.5) 

ax = plt.axes(xlim=(-10, 10), ylim=(-10, 10)) 
patch1 = plt.Circle((1, -1), 0.1, fc='b') 
patch2 = plt.Circle((2, -2), 0.1, fc='r') 
patch3 = plt.Circle((3, -3), 0.1, fc='r') 

def init(): 
    patch1.center = (0, 0) 
    patch2.center = (0, 0) 
    patch3.center = (0, 0) 
    ax.add_patch(patch1) 
    ax.add_patch(patch2) 
    ax.add_patch(patch3) 
    return patch1, patch2, patch3, 

def animate(i): 
    x, y = patch1.center 
    a, b = patch2.center 
    u, v = patch3.center 
    x = 0 + 3 * np.sin(np.radians(i)) 
    y = 0 + 3 * np.cos(np.radians(i)) 
    a = 0 + 1.5 * np.sin(np.radians(2*i)) 
    b = 0 + 1.5 * np.cos(np.radians(2*i)) 
    u = 0 + 5 * np.sin(np.radians(i/2)) 
    v = 0 + 5 * np.cos(np.radians(i/2)) 
    patch1.center = (x, y) 
    patch2.center = (a, b) 
    patch3.center = (u, v) 
    return patch1, patch2, patch3, 

anim = animation.FuncAnimation(fig, animate, 
           init_func=init, 
           frames=100000, 
           interval=20, 
           blit=True) 

plt.show() 

Я попытался это:

from mpl_toolkits.mplot3d import Axes3D 

fig = plt.figure() 
ax = fig.add_subplot(111, projection='3d') 
ax.set_xlim3d(-10,10); 
ax.set_ylim3d(-10, 10); 
ax.set_zlim3d(-10, 10); 

плюс добавление третьей координаты к остальной части кода, но ничего не отображается ...

ответ

0

here код показывает 3D-анимации, которая вам должен иметь возможность скопировать-вставить и запустить напрямую.

Вам нужно будет немного подумать о плоскости орбиты для каждой планеты в 3D, конечно ...