到目前為止,為了簡化問題,我們都假設物體的質量是1。接下來,我們將移除這個假設,然後將完全符合牛頓第二運動定律的apply_force()
方法,整合到Mover
這個類別中。
因為質量就只是用來衡量物體含有多少物質的一個數字,所以它是純量。要在Mover
這個類別加進質量這個性質,在__init__()
中,要加入這一行:
self.mass = 10
數字10是隨意設定的,只是為了說明方便,沒有什麼其他神奇的原因。另外,不像距離和時間的長短,可以分別用相隔多少像素以及歷經幾幀畫面來計算,在模擬世界中,並沒有合適的單位可以用來量測物體的質量。所以,後續為了說明方便,也為了從畫面上就可以看出不同物體的質量差異,我們會讓物體的質量多寡和像素數量具有一定的對應關係;也就是說,體型越大的,代表質量就越大。例如,一個半徑10像素的圓,就會比一個半徑5像素的圓,具有更大的質量。另外,當兩個圓形物體有同樣的密度時,它們的質量多寡,就會用圓的面積來衡量。
接下來,來看看怎麼修改apply_force()
。由牛頓第二運動定律
a = F / m
所以apply_force()
要修改成
def apply_force(self, force):
self.acceleration += force/self.mass
原書這一節約有一半的篇幅是在說明,將物體的質量納入考慮後,在寫p5.js程式時,應注意的問題以及寫法。使用Python來寫時,不會有那麼多的問題需要特別處理;感覺這一節的內容應該可以直接放在2.2節中,這樣假設物體質量都是1的那部分內容,也就不再需要了。
Exercise 2.2
p5.js語法的練習,故略過