到目前為止,為了簡化問題,我們都假設物體的質量是1。接下來,我們移除這個假設,然後將完全符合牛頓第二運動定律的apply_force()方法,整合到Mover這個類別中。
Units of Measurement
在真實世界中,事物的多寡是透過特定的單位來量測的。例如:兩個物體相距3公尺、快速球球速每小時160公里、體重60公斤等。但是在這一章中,在模擬時,我們會使用像素和幀來當作量測的單位。例如,兩個圓相距100個像素;這個圓以每幀3個像素的速率移動等。
那質量呢?在模擬時,有什麼單位可以用來量測質量嗎?很可惜,並沒有!在模擬時,我們當然可以自己創造一個量測質量的單位,但實在是沒必要。後續為了說明方便,也為了讓人看了有感,會讓質量和像素具有一定的關聯性。例如,一個半徑10像素的圓,就會比一個半徑5像素的圓,具有更大的質量。當然啦,在現實世界中,體型比較大不一定質量就比較大,因為還要考慮到物體的密度。因為密度比較大的關係,一個小小的鉛球,可是會比一個大大的氣球,還具有更大的質量。另外,當兩個圓形物體有同樣的密度時,它們的質量,就會用圓的面積來衡量。
因為質量就只是用來衡量物體含有多少物質的一個數字,所以它是純量。要在Mover這個類別加進質量這個性質,在__init__()中,要加入這一行:
self.mass = 10
數字10是隨意設定的,只是為了說明方便,沒有什麼其他神奇的原因。另外,由牛頓第二運動定律$$\vec{a}=\frac{\vec{F}}{m}$$
所以apply_force()要修改成
def apply_force(self, force):
self.acceleration += force/self.mass
原書這一節有約一半的篇幅是在說明,將物體的質量納入考慮在寫p5.js程式時,應注意的問題以及寫法。使用Python來寫時,不會有那麼多的問題需要特別處理。感覺這一節的內容應該可以直接放在2.2節中,這樣假設物體質量都是1的做法,也就不再需要了。
Exercise 2.2
略
沒有留言:
張貼留言