gpt4 book ai didi

python - mayavi points3d plot动画不会更新下一帧

转载 作者:太空宇宙 更新时间:2023-11-04 01:15:35 25 4
gpt4 key购买 nike

我正在编写一个代码,用于可视化四个在空间中移动的字形。目前 mayavi 窗口显示初始位置,但不会更新到下一个位置。

    #Library decleration 
import numpy as np
from mayavi.mlab import *

....

#Inputting the intital positions into the storage vector
storage_position[0].append(v_1.theta)
storage_position[1].append(v_1.phi)
#Calculating the rest of the positions using the symmetry given
storage_position = Sym(storage_position)

#Plotting the intitial positions

x_coord = x_trans( storage_position)
y_coord = y_trans(storage_position)
z_coord = z_trans( storage_position)


plt = points3d(x_coord, y_coord, z_coord)

msplt = plt.mlab_source
@mlab.animate(delay=100)
def anim(storage_position, storage_vort, no_vort ,x_coord, y_coord, z_coord):
f = mlab.gcf()
while True:
#for i in range(10):
#Working out the hamiltonian
#Hami(storage_position, storage_vort, 1 - 1, no_vort-1)

transfer_vector = method(storage_position, storage_vort, 1 - 1, no_vort-1)
storage_position[0].append(transfer_vector[0])
storage_position[1].append(transfer_vector[1])
storage_position = Sym(storage_position)


x_coord = x_trans( storage_position)
y_coord = y_trans(storage_position)
z_coord = z_trans( storage_position)

msplt.set(x_coord = x_coord, y_coord = y_coord, z_coord = z_coord)

yield


anim(storage_position, storage_vort, no_vort - 1,x_coord, y_coord, z_coord)
mlab.show()

x_coord 等是存储四个字形的 x 坐标的 numpy 向量。 x_trans 等是用动画的每一步的新坐标更新每个向量的函数。

最佳答案

尝试替换这一行:

msplt.set(x_coord = x_coord, y_coord = y_coord, z_coord = z_coord)

用这个:

msplt.set(x=x_coord, y=y_coord, z=z_coord)

点集数据源(应该是MGlyphSource类型的对象)知道xyz,但不支持将 x_coordy_coordz_coord 作为关键字参数。

这是一个完整的工作示例,可以帮助您入门:

from mayavi import mlab
from numpy import array, cos, sin, cos

x_coord = array([0.0, 1.0, 0.0, -1.0])
y_coord = array([1.0, 0.0, -1.0, 0.0])
z_coord = array([0.2, -0.2, 0.2, -0.2])

plt = mlab.points3d(x_coord, y_coord, z_coord)

msplt = plt.mlab_source
@mlab.animate(delay=100)
def anim():
angle = 0.0
while True:
x_coord = array([sin(angle), cos(angle), -sin(angle), -cos(angle)])
y_coord = array([cos(angle), -sin(angle), -cos(angle), sin(angle)])
msplt.set(x=x_coord, y=y_coord)
yield
angle += 0.1

anim()
mlab.show()

请注意,当您运行它时,您可能会看到许多警告打印到控制台。忽略它们:它们是无害的并且是 known issue .

关于python - mayavi points3d plot动画不会更新下一帧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24939126/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com