回上方

第3堂課

物理觀念

速度 = 速度 + 加速度 * 時間

 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 *

# 1. 參數設定
#加速度
a = -9.8    #加速度值,在 x、z 方向為 0,在 y 方向為 g=-9.8 公尺/秒^2
#速度
vy = 0      #球的 y 方向速度(公尺/秒),初始值為0
#高度
h = 10.0    #球的初始高度,單位為公尺
#時間間隔
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)

# 3. 描述物體的運動

while ball.pos.y > ball.radius:
    rate(1000)
    # 速度 = 速度 + 加速度 * 時間間隔
    vy = vy + a * dt
    # 位置 = 位置 + 速度 * 時間間隔
    ball.pos.y = ball.pos.y + vy * dt
_images/flowchart2.png

觸地反彈

 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
33
34
35
# -*- coding: utf8 -*-
# 匯入視覺化套件
from vpython import *

# 1. 參數設定
#加速度
a = -9.8    #加速度值,在 x、z 方向為 0,在 y 方向為 g=-9.8 m/s^2
#速度
vy = 0      #球的 y 方向速度(公尺/秒),初始值為0
#高度
h = 10.0    #球的初始高度,單位為公尺
#時間間隔
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)

# 3. 描述物體的運動

while True:
    rate(1000)
    # 速度 = 速度 + 加速度 * 時間間隔
    vy = vy + a * dt
    # 位置 = 位置 + 速度 * 時間間隔
    ball.pos.y = ball.pos.y + vy * dt

    if ball.pos.y < 0.2:
        vy = -vy

觸地反彈(摸擬能量耗損)

 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
33
34
35
# -*- coding: utf8 -*-
# 匯入視覺化套件
from vpython import *

# 1. 參數設定
#加速度
a = -9.8    #加速度值,在 x、z 方向為 0,在 y 方向為 g=-9.8 m/s^2
#速度
vy = 0      #球的 y 方向速度(公尺/秒),初始值為0
#高度
h = 10.0    #球的初始高度,單位為公尺
#時間間隔
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)

# 3. 描述物體的運動

while True:
    rate(1000)
    # 速度 = 速度 + 加速度 * 時間間隔
    vy = vy + a * dt
    # 位置 = 位置 + 速度 * 時間間隔
    ball.pos.y = ball.pos.y + vy * dt

    if ball.pos.y < ball.radius and vy < 0:
        vy = -vy*0.9

作業:修改模擬程式,計算自1 0公尺高球自由落下在能量耗損(0.9)的情況下觸地反彈直到第6次碰到地面所花的時間。

提示:觸地反彈,第三次碰到地面後停止動畫

 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
33
34
35
36
37
# -*- coding: utf8 -*-
# 匯入視覺化套件
from vpython import *

# 1. 參數設定
#加速度
a = -9.8    #加速度值,在 x、z 方向為 0,在 y 方向為 g=-9.8 m/s^2
#速度
vy = 0      #球的 y 方向速度(公尺/秒),初始值為0
#高度
h = 10.0    #球的初始高度,單位為公尺
#時間間隔
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)
#次數
number = 0

# 3. 描述物體的運動

while number < 3:
    rate(1000)
    # 速度 = 速度 + 加速度 * 時間間隔
    vy = vy + a * dt
    # 位置 = 位置 + 速度 * 時間間隔
    ball.pos.y = ball.pos.y + vy * dt
    if ball.pos.y < 0.2:
        vy = -vy
        number = number + 1

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