2024年2月29日 星期四

2.3 Factoring in Mass

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

沒有留言:

張貼留言

4.9 Image Textures and Additive Blending

粒子系統可以用來製作視覺特效(visual effect, VFX),而怎麼呈現粒子的外觀,以及粒子具有怎樣的紋理(texture),都會影響特效所展現出來的效果。例如在下圖中,可以很清楚地看到,使用兩種不同的粒子紋理所呈現出來的特效效果,就有很大的不同。 要賦予粒子不同的紋理...