Вот простой анимационный скрипт на Python Mayavi:
from mayavi import mlab
import numpy as np
alpha = np.linspace(0, 2*np.pi, 100)
beta = np.linspace(0, np.pi, 100)
x = np.sin(beta) * np.cos(alpha)
y = np.sin(beta) * np.sin(alpha)
z = np.cos(beta)
plt = mlab.points3d(x, y, z)
@mlab.animate(delay=100)
def anim():
global x, y, z
f = mlab.gcf()
for _ in range(100):
# x = np.concatenate((x, [np.random.random()]))
# y = np.concatenate((y, [np.random.random()]))
# z = np.concatenate((z, [np.random.random()]))
x = 1.1 * x
plt.mlab_source.set(x=x, y=y, z=z)
f.scene.render()
yield
anim()
mlab.show()
Это хорошо работает, и точки перемещаются. Тем не менее, я хотел бы раскомментировать np.concatenate
строки так, чтобы количество точек менялось во время анимации ... Mayavi, похоже, не поддерживает это?
Я думаю, что это ограничение связано с эффективностью обновления сюжета, но я бы хотел, чтобы вышесказанное сработало и не обращало внимания на скорость.
Есть идеи?
Я пытался просто реплотировать mlab.points3d(x, y, z)
после mlab.clf()
, но анимация не отображается - только последний кадр.
Заранее спасибо.