作者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
推 shps90060505:謝謝! 我再研究看看 (另一方法就是暴力的畫出每張 06/27 01:35
→ shps90060505:圖,然後用mencoder或ffmpeg集合成avi檔) 06/27 01:35