2024-07-29|閱讀時間 ‧ 約 23 分鐘

The Nature of Code閱讀心得與Python實作:2.3 Factoring in Mass

到目前為止,為了簡化問題,我們都假設物體的質量是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語法的練習,故略過

分享至
成為作者繼續創作的動力吧!
© 2024 vocus All rights reserved.