""" 用 VPython 來做 3D 動畫。 複合圓周運動 ζ= 0 for k in range(N+1): ζ += exp(1j*2*π*f*t*k) 除了漢字之外, 順便把希臘字母 π (pi), ζ (zeta), Γ (Gamma), Φ (Phi) 也拿來用一用。 Renyuan Lyu 2014/07/03 """ import pylab as pl import visual as vs def 設定背景(): 背景色= (.5,.5,.5) # 灰色 vs.scene.background= 背景色 三軸向量= [(1,0,0), (0,1,0), (0,0,1)] 三軸向量= [vs.vector(a) for a in 三軸向量] for a in 三軸向量: vs.arrow(axis= a, color= a, shaftwidth= 0.01) info= '''ζ = Σ exp(j 2 π f t k), k in [1,Ν]''' vs.text(text= info, align='center', pos= (0,2,2), height= .2, width= .2, depth= 0.1, color= (1,1,0)) def 實驗01(): 頻率= f = 1 最大時間= T = 2 圓周率= π = pl.pi # 3.1415926 dt= 0.01 複指數= exp= pl.exp 實部= real= pl.real 虛部= imag= pl.imag 時間範圍= pl.arange # # 畫 曲線 Γ (Gamma) # t= 時間範圍(0, T, dt) N= 2 ζ= 0 for k in range(1,N+1): ζ += exp(1j*2*π*f*t*k) x= real(ζ) y= imag(ζ) z= t 曲線= Γ= vs.curve() Γ.x= x Γ.y= y Γ.z= z Γ.red= x Γ.green= y Γ.blue= z # # 球 Φ (Phi) 沿曲線 Γ 轉 # 球= Φ= vs.sphere(pos= (0,0,0), radius= .1, color=(1,1,1)) t= 0 while True: ζ= 0 for k in range(1, N+1): ζ += exp(1j*2*π*f*t*k) x= real(ζ) y= imag(ζ) z= t Φ.pos= (x,y,z) Φ.color= (x,y,z) Φ.visible= True vs.rate(100) Φ.visible= False t += dt if ( (T-abs(dt) < t < T) or (0 < t < abs(dt)) ): dt *= -1 Φ.visible= True if __name__=='__main__': 設定背景() 實驗01()
I Love Python. I Learn Python. I Teach Python. I Am a Python.
2014/07/04
用 VPython 來做 3D 動畫。
訂閱:
張貼留言 (Atom)
沒有留言:
張貼留言