Lesson02

試著將for迴圈改成while迴圈,條件是X座標的位置在一定範圍內,不斷地移動。

# -*- coding: utf8 -*- # 匯入視覺化套件 from visual import * #產生一個寬400像素,高400像素的3度空間以進行繪圖 scene = display(width=400, height=400,center=(0,0.06,0)) #產生一個扁長形方塊,當做是地板 floor = box(pos=(0,0,0), length=0.3, height=0.005, width=0.1) #產生一個正立方物體 cube = box(pos=(0, 0.05/2, 0), length=0.05, height=0.05, width=0.05) #讓物體運動 while cube.pos.x < 0.1: rate(100) cube.pos.x = cube.pos.x + 0.001 while cube.pos.x > -0.1: rate(100) cube.pos.x = cube.pos.x - 0.001

我們可以用上面學到的知識,來撰寫一個物體一維等速運動的物理現象模擬程式。

物理觀念:

位移(公尺) = 速度(公尺/秒) X 時間(秒)

位置 = 位置 + 位移

# -*- coding: utf8 -*- # 匯入視覺化套件 from visual import * #產生一個寬400像素,高800像素的3度空間以進行繪圖 scene = display(width=400, height=400,center=(0,0.06,0)) #產生一個扁長形方塊,當做是地板 floor = box(pos=(0,0,0), length=0.3, height=0.005, width=0.1) #產生一個正立方物體 cube = box(pos=(0, 0.05/2, 0), length=0.05, height=0.05, width=0.05) #---------- # 參數設定 #---------- #速度 v = 0.02 #物體速度 = 0.02 (公尺/秒) #時間間隔 dt = 0.001 #畫面更新的時間間隔,單位為秒 #經過時間 t = 0 #模擬所經過的時間,單位為秒,初始值為0 #一維等速運動 while cube.pos.x < 0.1: rate(1000) cube.pos.x = cube.pos.x + v * dt t = t + dt print "以0.02(公尺/秒)的速度移動0.1公尺花了" + str(t) + "秒"

練習

  1. 改變 v 的數值,並用你的手錶或碼錶計時,看看到木塊到 0.10m 時,所花的時間是否等於 0.10 / v。
  2. 設定 v 的數值,並改變程式碼中 while (cube.pos.x < 0.10): 中的數值 0.10 為你想要的數值,執行程式,看看結果,有什麼不同。
  3. 更改 display()中,參數 x、y 與 center 的值,或 background 中的數值,看發生了什麼差異。
  4. 改變 rate()括號中的值,並用你的手錶或碼錶計時,看看到模擬停止時,不同數值在實際時間所造成的差異。
  5. 將這一行程式碼 cube = box(pos=(0, 0.05/2, 0), length=0.05, height=0.05, width=0.05)改為cube = box(pos=(0, 0.05/2, 0), length=0.05, height=0.05, width=0.05, material= materials.wood)後,執行程式,你會發現木塊上有了木質條紋。

作業

修改模擬程式,計算以速度0.03公尺/秒向右移動0.1公尺,再向左移動0.2公尺所需的時間。

results matching ""

    No results matching ""