The Nature of Code閱讀心得與Python實作:2.1 Forces and Newton's...

更新於 發佈於 閱讀時間約 7 分鐘
這一節的標題是
2.1 Forces and Newton's Laws of Motion
因為方格子標題字數限制,所以沒完整顯現

根據牛頓的三大運動定律,力可以定義成

力是會導致有質量的物體加速的向量

這個關於力的定義的重點,就在於「向量」這兩個字。既然力是向量,那第一章介紹的關於向量的觀念,以及寫程式時用到的工具、技巧,都可以拿來使用。

接下來,就來看看牛頓的三大運動定律,以及程式寫法。

Newton's First Law

牛頓第一運動定律說的是:

物體不受力或合力為零時,靜者恆靜;動者恆做等速直線運動

也就是說,物體如果沒有受到力的作用,或者作用在身上的力都互相抵銷了,那它的速度和運動方向就不會改變。從這裡可以看出來,根據第一運動定律,物體有維持原運動狀態的傾向,所以第一運動定律又叫「慣性定律」。

根據第一運動定律,在模擬的時候,如果作用在物體的合力為零,那物體的速度向量就會維持不變。換句話說,除非是在合力不為零的情況下,否則Mover類別的update()方法中,是不應該用任何數學運算來改變velocity這個向量的。

Newton's Third Law

接下來,先來看第三運動定律,然後再回過頭來看第二運動定律。

第三運動定律說的是:

對於每一個作用力,都會有一個大小相同方向相反的反作用力

根據第三運動定律,當你推一堵牆的時候,會有一股大小相同的反作用力作用在你身上。不過,這並不是說這堵牆因為不爽被你推,所以主動回擊,也推你一把;第三運動定律真正的意思是,當你出力推那堵牆時,你的力量包含了作用力及反作用力這兩股成對的力量。

第三運動定律原先的敘述容易引起誤解,改用下面的敘述方式應該會比較好一些:

作用力和反作用力總是成雙成對的出現,它們的大小相同,但方向相反。

看到「大小相同方向相反」,可別以為成對出現的力會互相抵銷,導致合力為零;這裡要注意的是,作用力和反作用力,它們的作用對象不同,所以不會互相抵銷。當你推牆的時候,一股力是作用在牆上,另一股力則是作用在你身上。

雖然作用力和反作用力的大小相同,但這並不代表它們對兩個物體在運動方面的影響是一樣的。例如,把一顆球丟向牆壁。雖然作用在牆壁和球的力量相等,但牆壁不動如山,而球則反彈回來。作用力和反作用力究竟會對物體的運動造成怎樣的影響,還得考慮物體的質量、摩擦力等等其他的因素才能知道。

因為作用力和反作用力的大小相同而方向相反,所以在寫程式時,如果物體A作用在物體B的力量是f時,那反作用力,也就是物體B作用在物體A的力量,就會是-f。所以,如果是要模擬兩個物體間的萬有引力,當其中一個物體受到萬有引力f的作用時,另一個物體就會受到-f的作用力。

雖然作用力和反作用力總是同時出現,不過,畢竟我們只是利用自然界的物理定律來建造虛擬的世界,而不是真的要鉅細靡遺精準地重現真實世界,所以有時候我們並不會去管反作用力的部分。例如,當我們在模擬環境中的風時,就不會去管當風吹在物體上時,施加在空氣上的反作用力,畢竟我們要模擬的是風對物體所造成的影響,而不是去模擬空氣受力之後的反應。

Newton's Second Law

牛頓第二運動定律說的是

力等於質量乘上加速度

寫成數學式就是

F = ma

其中F是力;m是物體的質量;a是加速度。

從牛頓第二運動定律的數學式可以看出來,加速度和作用力成正比,而和物體的質量成反比。所以,如果去推一顆籃球,用的力量越大,球滾動的加速度會越大;如果用相同的力量去推一顆比籃球重得多的鉛球,那鉛球滾動的加速度,將會比籃球小得多。

在上面那段敘述中提到:當用相同的力量去推一顆比籃球重得多的鉛球時,由牛頓第二運動定律可以知道,籃球的加速度會比鉛球大。這其實是一般通俗不精確,把「重量(weight)」和「質量(mass)」當成同一件事的說法。「重量」和「質量」其實是兩種不同的物理量,在牛頓第二運動定律中用的是「質量」,而不是「重量」。

重量和質量是不同的物理量,那它們之間有什麼不一樣呢?簡單來說,質量是用來衡量物體含有多少物質的量,單位是公斤(kg);而重量則是重力作用在物體上的力量,是一種力,單位是牛頓(N)。由牛頓第二運動定律,物體的重量w,等於物體的質量m,乘上重力加速度g,也就是

w = mg

在地球上,1公斤質量的物體,其重量也稱為1公斤重,記為1 kgw。因此,當一般在說某個東西有多重時,因為我們就在地球上,所以不管是把它理解為指的是重量或質量,並不會有什麼不同。然而,如果不是在地球上,那同一個物體的質量和重量,就不見得會一樣。一個物體的質量不會因地點不同而不同,但在不同的地點,因為重力不同的關係,重量可能會不一樣。例如,具一公斤質量的物體,不管是在地球還是月球,質量都是一公斤;但是在月球上,因為重力只有地球的六分之一,所以這個物體的重量,只有在地球時的六分之一。

前面提到質量在真實世界中的定義,那在模擬的世界中,質量是什麼呢?寫程式的時候,又該如何處理質量這個物理量呢?在這節中,我們先把問題簡化,假設在模擬世界中,所有物體的質量都是1,然後在之後的小節中再來看看,物體的質量不是1時該怎麼辦。

因為質量是1,所以由牛頓第二運動定律

a = F / m = F / 1 = F

也就是說,經過簡化之後的模擬世界,物體的加速度和施加於其上的力是相等的。

在第一章中,我們知道了物體的加速度、速度、位置間的關係,也就是

velocity += acceleration
position += velocity

現在再加上作用力和加速度間的關係,也就是

acceleration = force

所以,力可以說是讓物體得以運動的源頭。

既然物體的加速度和施加於其上的力是相等的,我們可以在Mover這個類別加入一個apply_force()方法,用來施加力量給物件。例如

mover.apply_force(wind)
mover.apply_force(gravity)

這裡的windgravity都是pygame.Vector2物件。這個施加力量給物件的方法,實作如下:

def apply_force(self, force):
self.acceleration = force

這樣子所實作出來的apply_force(),看起來挺不賴的,但卻會有個大問題。假設現在有windgravity兩股力量同時作用在mover這個Mover類別的物件上,程式很自然會這樣寫

mover.apply_force(wind)
mover.apply_force(gravity)
mover.update()
mover.show()

前兩二行程式所做的事情,就相當於是

mover.acceleration = wind
mover.acceleration = gravity

我們原本是希望windgravity同時都作用在mover上,但很不幸的,這樣子寫,最後卻只有gravity會作用在mover上;這是因為,本來一開始有作用的wind,在後來被gravity給取代掉了。

很顯然的,上述的寫法,沒辦法處理有許多個力同時作用的情況。那該怎麼辦呢?下一節見分曉。



留言
avatar-img
留言分享你的想法!
avatar-img
ysf的沙龍
19會員
157內容數
寫點東西自娛娛人
ysf的沙龍的其他內容
2024/08/12
到目前為止,我們所模擬的萬有引力,是一個物體吸引另一個物體,或者是一個物體吸引多個物體。然而,在真實世界中,每個物體都會互相吸引,所以在這一節中,就來把模擬的情境,擴展成多個物體互相吸引。
2024/08/12
到目前為止,我們所模擬的萬有引力,是一個物體吸引另一個物體,或者是一個物體吸引多個物體。然而,在真實世界中,每個物體都會互相吸引,所以在這一節中,就來把模擬的情境,擴展成多個物體互相吸引。
2024/08/09
模擬世界是我們寫程式造出來的,我們就是模擬世界的主宰,所以各種作用力要長什麼樣子、要怎麼個作用法,都由我們決定。不過,如果希望這些作用力看起來像真實世界的作用力一樣,那在寫程式的時候,套用這些作用力在真實世界中的物理公式,會是比較省時省力的做法。
Thumbnail
2024/08/09
模擬世界是我們寫程式造出來的,我們就是模擬世界的主宰,所以各種作用力要長什麼樣子、要怎麼個作用法,都由我們決定。不過,如果希望這些作用力看起來像真實世界的作用力一樣,那在寫程式的時候,套用這些作用力在真實世界中的物理公式,會是比較省時省力的做法。
Thumbnail
2024/08/02
在真實世界中有各式各樣的作用力影響著我們,那在模擬世界中呢?要怎麼在本來無一物的模擬世界中,製造出作用力呢?
2024/08/02
在真實世界中有各式各樣的作用力影響著我們,那在模擬世界中呢?要怎麼在本來無一物的模擬世界中,製造出作用力呢?
看更多
你可能也想看
Thumbnail
透過蝦皮分潤計畫,輕鬆賺取零用金!本文分享5-6月實測心得,包含數據流程、實際收入、平臺優點及注意事項,並推薦高分潤商品,教你如何運用空閒時間創造被動收入。
Thumbnail
透過蝦皮分潤計畫,輕鬆賺取零用金!本文分享5-6月實測心得,包含數據流程、實際收入、平臺優點及注意事項,並推薦高分潤商品,教你如何運用空閒時間創造被動收入。
Thumbnail
單身的人有些會養寵物,而我養植物。畢竟寵物離世會傷心,植物沒養好再接再厲就好了~(笑)
Thumbnail
單身的人有些會養寵物,而我養植物。畢竟寵物離世會傷心,植物沒養好再接再厲就好了~(笑)
Thumbnail
不知你有沒有過這種經驗?衛生紙只剩最後一包、洗衣精倒不出來,或電池突然沒電。這次一次補貨,從電池、衛生紙到洗衣精,還順便分享使用心得。更棒的是,搭配蝦皮分潤計畫,愛用品不僅自己用得安心,分享給朋友還能賺回饋。立即使用推薦碼 X5Q344E,輕鬆上手,隨時隨地賺取分潤!
Thumbnail
不知你有沒有過這種經驗?衛生紙只剩最後一包、洗衣精倒不出來,或電池突然沒電。這次一次補貨,從電池、衛生紙到洗衣精,還順便分享使用心得。更棒的是,搭配蝦皮分潤計畫,愛用品不僅自己用得安心,分享給朋友還能賺回饋。立即使用推薦碼 X5Q344E,輕鬆上手,隨時隨地賺取分潤!
Thumbnail
身為一個典型的社畜,上班時間被會議、進度、KPI 塞得滿滿,下班後只想要找一個能夠安靜喘口氣的小角落。對我來說,畫畫就是那個屬於自己的小樹洞。無論是胡亂塗鴉,還是慢慢描繪喜歡的插畫人物,那個專注在筆觸和色彩的過程,就像在幫心靈按摩一樣,讓緊繃的神經慢慢鬆開。
Thumbnail
身為一個典型的社畜,上班時間被會議、進度、KPI 塞得滿滿,下班後只想要找一個能夠安靜喘口氣的小角落。對我來說,畫畫就是那個屬於自己的小樹洞。無論是胡亂塗鴉,還是慢慢描繪喜歡的插畫人物,那個專注在筆觸和色彩的過程,就像在幫心靈按摩一樣,讓緊繃的神經慢慢鬆開。
Thumbnail
模擬世界是我們寫程式造出來的,我們就是模擬世界的主宰,所以各種作用力要長什麼樣子、要怎麼個作用法,都由我們決定。不過,如果希望這些作用力看起來像真實世界的作用力一樣,那在寫程式的時候,套用這些作用力在真實世界中的物理公式,會是比較省時省力的做法。
Thumbnail
模擬世界是我們寫程式造出來的,我們就是模擬世界的主宰,所以各種作用力要長什麼樣子、要怎麼個作用法,都由我們決定。不過,如果希望這些作用力看起來像真實世界的作用力一樣,那在寫程式的時候,套用這些作用力在真實世界中的物理公式,會是比較省時省力的做法。
Thumbnail
在物理的領域裏 不變的物質有著恆常的定律 於是乎 月球繞著地球轉 地球繞著太陽轉 太陽繞著銀河系   在化學的領域裏 物質隨著原子們的排列組合 形成了 形色多變銀河系 各有千秋太陽系 繽紛美麗的地球   在數學的領域裏 數字的跳躍翻轉變化萬千中 綜言是 正負平方開根
Thumbnail
在物理的領域裏 不變的物質有著恆常的定律 於是乎 月球繞著地球轉 地球繞著太陽轉 太陽繞著銀河系   在化學的領域裏 物質隨著原子們的排列組合 形成了 形色多變銀河系 各有千秋太陽系 繽紛美麗的地球   在數學的領域裏 數字的跳躍翻轉變化萬千中 綜言是 正負平方開根
Thumbnail
這一節談的是向量的定義,以及如何運用向量來建立模擬物體運動時,關於位置和速度間的關係式。
Thumbnail
這一節談的是向量的定義,以及如何運用向量來建立模擬物體運動時,關於位置和速度間的關係式。
Thumbnail
1.0 從函數到函算語法 1.2 函數概念小史 1.2.1 中譯的來源 1.2.2 一個速度問題 1.2.3 幾何的方法 1.2.4 微積分的記法  二 前面說過,牛頓關心的不是抽象的數學問題,他要解決的是天體運動的問題。他知道,假如他擁有該天體在任何一刻的瞬速數據,他便能夠從質量
Thumbnail
1.0 從函數到函算語法 1.2 函數概念小史 1.2.1 中譯的來源 1.2.2 一個速度問題 1.2.3 幾何的方法 1.2.4 微積分的記法  二 前面說過,牛頓關心的不是抽象的數學問題,他要解決的是天體運動的問題。他知道,假如他擁有該天體在任何一刻的瞬速數據,他便能夠從質量
Thumbnail
直觀理解 導數:考慮的是單一變數的函數,描述的是函數在某點的斜率或變化率。 偏導數:考慮的是多變數函數,描述的是函數在某個變數變化時的變化率,其他變數保持不變。  (針對各維度的調整 或者稱變化 你要調多少) 應用 導數:在物理學中應用廣泛,例如描述速度和加速度。 偏導數:在多變量分析、優
Thumbnail
直觀理解 導數:考慮的是單一變數的函數,描述的是函數在某點的斜率或變化率。 偏導數:考慮的是多變數函數,描述的是函數在某個變數變化時的變化率,其他變數保持不變。  (針對各維度的調整 或者稱變化 你要調多少) 應用 導數:在物理學中應用廣泛,例如描述速度和加速度。 偏導數:在多變量分析、優
Thumbnail
1. 凡所有相皆是虛妄,若見諸相非相,即見如來 2. 能量看不到,卻統籌物理世界(形而上統籌形而下) 3. 數學與物理的不同:數學「定理」:絕對真理,不因時空轉換;物理「定律」:找到自然背後的律,而非證明 4. 數學的本質:建立在不能再問的「公理」上 5. 歐式平
Thumbnail
1. 凡所有相皆是虛妄,若見諸相非相,即見如來 2. 能量看不到,卻統籌物理世界(形而上統籌形而下) 3. 數學與物理的不同:數學「定理」:絕對真理,不因時空轉換;物理「定律」:找到自然背後的律,而非證明 4. 數學的本質:建立在不能再問的「公理」上 5. 歐式平
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News