速度視覺化
-
在自由落體的案例中,加上顯示速度值的箭頭,可以讓我們更清楚地了解重力加速度對球造成的變化
Web VPython 3.2 # 匯入視覺化套件 from vpython import * # 1. 參數設定 # 高度 h = 10.0 #球的初始高度,單位為公尺 # 加速度 a = vector(0, -9.8, 0) #加速度值,在 x、z 方向為 0,在 y 方向為 g=-9.8 公尺/秒^2 # 時間間隔 dt = 0.001 #畫面更新的時間間隔,單位為秒 # 經過時間 t = 0 #模擬所經過的時間 ,單位為秒,初始值為0 # 2. 物件建立 # 畫布 scene = canvas(center=vector(0, h/2, 0), background=vector(0.5,0.6, 0)) # 參考地板 floor = box(pos=vector(0,0,0), length=15, height=0.005, width=5) # 球 ball = sphere(pos=vector(0, h, 0), radius=0.2, color=color.blue) # 球的速度 ball.v = vector(0, 0, 0) #速度值,在 x、y、z 方向為 0 # 速度箭頭 v_arrow = arrow(pos=ball.pos, axis=ball.v, shaftwidth=0.1) # 3. 描述物體的運動 while ball.pos.y > 0.2: rate(1000) # 速度 = 速度 + 加速度 * 時間間隔 ball.v = ball.v + a * dt # 位置 = 位置 + 速度 * 時間間隔 ball.pos= ball.pos+ ball.v* dt # 更新速度箭頭資料 v_arrow.pos = ball.pos v_arrow.axis = ball.v/5
執行結果
作業
修改三維運動拋物線的案例,加適當的程式碼,使得在任何時刻,球上都有一個箭頭(arrow),並且此箭頭的長度正比於球的速度,且方向平行於球的速度方向,如下圖。
提示:三維運動拋物線程式如下。
Web VPython 3.2 # 匯入視覺化套件 from vpython import * # 1. 參數設定 # 球的半徑 size = 0.2 #球的半徑,單位為公尺 # 加速度 g = vector(0,-9.8,0) #加速度值,在 x、z 方向為 0,在 y 方向為重力加速度 -9.8 公尺/秒^2 # 時間間隔 dt = 0.001 #畫面更新的時間間隔,單位為秒 # 經過時間 t = 0 #模擬所經過的時間 ,單位為秒,初始值為0 # 2. 物件建立 # 畫布 scene = canvas(center=vector(15, 5, 0), background=vector(0.5,0.6, 0.5)) # 參考地板 floor = box(pos=vector(15,-0.05,0), length=30, height=0.1, width=5) # 球 ball = sphere(pos=vector(0, 0, 0), radius=size, color=color.blue, make_trail= True) # 球的速度 ball.v = vector(5, 10, 0) #速度值,在 x、y、z 方向為 0 # 3. 描述物體的運動 while t < 5: rate(1000) # 速度 = 速度 + 加速度 * 時間間隔 ball.v = ball.v + g * dt # 位置 = 位置 + 速度 * 時間間隔 ball.pos = ball.pos + ball.v * dt # 判斷球是否碰到地面 if ball.pos.y <= size: ball.v.y = abs(ball.v.y) #計算時間 t = t + dt
執行結果