作者suzuke (suzuke)
看板Python
标题Re: [问题] 从一个3维array画3d动画
时间Mon Jun 27 00:59:13 2011
※ 引述《shps90060505 (蓝岚)》之铭言:
: 假设我有一个3维的array a
: import numpy as np
: a = np.array([[[1,1,1],[2,2,2],[3,3,3]],
: [[1,1,1],[1,2,3],[3,3,3]],
: [[2,1,3],[1,2,3],[3,3,3]],
: [[2,1,3],[1,2,3],[4,3,2]]],dtype = np.float64)
: a[0]是指t=0时空间中A,B,C三个点的位置
: a[1]是指t=1时空间中A,B,C三个点的位置(B从[2,2,2]移至[1,2,3])
: a[2]是指t=2时...如此类推
: 我利用matplotlib.pyplot可以画出任一个时刻点的A,B,C三个点的3D位置图
: 但....
: 我想要画成动画,这样我才能看出他们是在移动的
: array a只是个很简单的例子
: 我实际上想做的是空间中有50个点,然後t=0~9999(有一万个时刻点)
: 查了很久,还是没找到解决方法
: 请大家帮忙
: 谢谢
from visual import *
import numpy as np
a = np.array([[[1,1,1],[2,2,2],[3,3,3]],
[[1,1,1],[1,2,3],[3,3,3]],
[[2,1,3],[1,2,3],[3,3,3]],
[[2,1,3],[1,2,3],[4,3,2]]],dtype = np.float64)
#举A球当例子
#给初始位置
ax,ay,az = a[0][0]
ball_A = sphere(pos=(ax,ay,az), radius=0.5, color=color.red)
#A球轨迹
ball_A.trace = curve(pos=ball_A.pos, color=color.red)
dt = 1
t = 0
while True:
t += dt
rate(10/dt)
ball_A.pos = a[t][0]
ball_A.trace.append(pos=ball_A.pos)
...
大概类似这样~
当然直接套用会有问题~
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 180.177.113.241
1F:推 shps90060505:谢谢! 我再研究看看 (另一方法就是暴力的画出每张 06/27 01:35
2F:→ shps90060505:图,然後用mencoder或ffmpeg集合成avi档) 06/27 01:35