Python 板


LINE

我覺得這圖很好 http://matplotlib.sourceforge.net/trunk-docs/examples/animation/simple_3danim.html 或是這個影片(有一個物件在裡面動,外面有個額外視窗可以看軌跡) https://www.youtube.com/watch?v=0GzCw92Q7a4
希望用類似這code的方式畫出我生產出來的三維data import matplotlib import time import math import matplotlib as mpl from mpl_toolkits.mplot3d import Axes3D import matplotlib.animation as animation import mpl_toolkits.mplot3d.axes3d as p3 import numpy as np import matplotlib.pyplot as plt import numpy from pylab import * class vec(object): def __init__(self, x, y, z): self.vec=(x, y, z) def unit(self, vec): dist=math.sqrt(vec[0]**2+vec[1]**2+vec[2]**2) u=(vec[0]/dist,vec[1]/dist,vec[2]/dist) return u def add(self, vector1, vector2): summation=(vector1[0]+vector2[0], vector1[1]+vector2[1], vector1[2]+vector2[2]) return summation def addfour(self, vec1, vec2, vec3, vec4): comebine1=vector.add(vec1,vec2) comebine2=vector.add(vec3,vec4) outcome=vector.add(comebine1, comebine2) return outcome def smultiply(self,scalar, vec): product=(scalar*vec[0],scalar*vec[1],scalar*vec[2]) return product def innerproduct(self, vec1, vec2): result=(vec1[0]*vec2[0]+vec1[1]*vec2[1]+vec1[2]*vec2[2]) return result def crossproduct(self, vec1, vec2): res=(vec1[1]*vec2[2]-vec1[2]*vec2[1], vec1[2]*vec2[0]-vec1[0]*vec2[2], vec1[0]*vec2[1]-vec1[1]*vec2[0]) return res def function(self, vec1, vec2): coef1=c1*inner(vec2, vec2) term1=self.smultiply(coef1, vec2) term2=self.smultiply(c2,self.crossproduct(vec2,vec1)) term3=self.smultiply(c3,(0,0,1)) term4=self.smultiply(c4*vec1[2],vec1) sumoffour=self.addfour(term1,term2,term3,term4) out=self.smultiply(h, sumoffour) return out def rungekutta1(self,vec1,vec): k11=self.smultiply(h,vec) k11_half=self.smultiply(.5, k11) y12=self.add(vec, k11_half) k12=self.smultiply(h,y12) k12_half=self.smultiply(.5, k12) y13=self.add(vec, k12_half) k13=self.smultiply(h,y13) y14=self.add(vec, k13) k14=self.smultiply(h,y14) k12_double=self.smultiply(2.0, k12) k13_double=self.smultiply(2.0, k13) k1s=self.addfour(k11, k12_double, k13_double, k14) n_next=self.add(vec1, self.smultiply(1.0/6, k1s)) return n_next def rungekutta2(self, vec1, vec2): k21=self.function(vec1, vec2) n22=self.add(vec1,self.smultiply(.5*h,(1,1,1))) d_n22=self.add(vec2,self.smultiply(.5,k21)) k22=self.function(n22,d_n22) n23=self.add(vec1,self.smultiply(.5*h,(1,1,1))) d_n23=self.add(vec2,self.smultiply(.5,k22)) k23=self.function(n23,d_n23) n24=self.add(vec1,self.smultiply(h,(1,1,1))) d_n24=self.add(vec2,k23) k24=self.function(n24,d_n24) k22_double=self.smultiply(2.0,k22) k23_double=self.smultiply(2.0,k23) k2s=self.addfour(k21, k22_double, k23_double, k24) d_n_next=self.add(vec2, self.smultiply(1.0/6, k2s)) return d_n_next fig = plt.figure() ax = p3.Axes3D(fig) c1=-1.0 c2=-3.0 c3=4.0 c4=-5.0 h=.01 vector=vec(1,2,3) allone=vec(1.0,1.0,0.0) n=(1.0,1.0,.0) d_n=(1.0,-1.0,.0) n=vector.unit(n) d_n=vector.unit(d_n) for i in arange(1,100): n=vector.rungekutta1(n, d_n) n=vector.unit(n) d_n=vector.rungekutta2(n, d_n) d_n=vector.unit(d_n) x = n[0] y = n[1] z = n[2] d_x=d_n[0] d_y=d_n[1] d_z=d_n[2] 主要其實就在最後這部分,生產出一堆向量n & d_n, 希望是邊算邊畫出來位置在跑的狀況,理想上還要把跑的速度(d_n)給顯示出來 不過我想先試試看有沒有簡單的指令,可以做到把點(n, position)的改變 重複描繪在同一個3d圖裡面?或是其實如果只有更新的點也可以 (不過那樣的話要有夠明顯的標示) 我有嘗試加上 ax.plot(x,y) plt.show() 或是 ax.plot3d(x,y,z) plt.show() 沒效果 能提供一點建議嗎? --



※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.24.62.187 ※ 編輯: Strogatz 來自: 114.24.62.187 (03/25 14:51)
1F:→ Strogatz:慘 沒人理我 不過我想我應該是搞得出來拉 04/01 15:50
2F:推 apua:如果是要畫單純的3D圖形,可以考慮用Vpython試試看 04/10 10:38







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:Soft_Job站內搜尋

TOP