回上方

第2堂課

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

物理觀念:

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

位置 = 位置 + 位移

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# -*- coding: utf8 -*-
# 匯入視覺化套件
from vpython import *

#產生一個寬400像素,高400像素的3度空間以進行繪圖
scene = canvas(width=400, height=400,center=vector(0,0.06,0))
#產生一個扁長形方塊,當做是地板
floor = box(pos=vector(0,0,0), length=0.3, height=0.005, width=0.1)
#產生一個正立方物體
cube = box(pos=vector(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(t)

練習

改變 v 的數值,並用你的手錶或碼錶計時,看看到木塊到 0.10m 時,所花的時間是否等於 0.10 / v。

設定 v 的數值,並改變程式碼中 while (cube.pos.x < 0.10): 中的數值 0.10 為你想要的數值,執行程式,看看結果,有什麼不同。

更改 display()中,參數 x、y 與 center 的值中的數值,看發生了什麼差異。

改變 rate()括號中的值,並用你的手錶或碼錶計時,看看到模擬停止時,不同數值在實際時間所造成的差異。

將這一行程式碼 cube = box(pos=vector(0, 0.05/2, 0), length=0.05, height=0.05, width=0.05)改為cube = box(pos=vector(0, 0.05/2, 0), length=0.05, height=0.05, width=0.05, texture= textures.wood)後,執行程式,你會發現木塊上有了木質條紋。

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


本單元課程自2018.7.5日起已被瀏覽 568