三體運動的程式模擬

2022-02-20 20:31:28 字數 1554 閱讀 9281

前幾天看了《三體》,很不錯的科幻**。說到三體,我想到我大學的乙個舍友叫王晶,和香港那個導演同名同姓同性別.記得有一次幾個同學在一塊聊天,有個女生問他:父母為什麼給他取名叫晶.他說叫晶是父母希望能有三個太陽守護著他。那時我還很單純,不會用五行缺什麼的話來諷刺他,只是說,如果給他起名叫王晶晶的話,那就有6個太陽守護他了.現在對三體有了一些了解,才意識到被三個太陽罩著,那不叫守護,應該是被蹂躪.三體內的行星,感覺是被三個恆星玩弄於股掌之間,如同球一樣踢來踢去.

空間中三個星體,受萬有引力作用下的運動被稱為三體運動,這是最簡單且引人注目的混沌。混沌確定系統是龐加萊在研究三體問題時第一次發現的。僅僅三顆星體的運動,就能變得複雜而眩目。這種複雜曾令數學家們在百年間困惑不已。如果只有兩個天體,那麼一切是多麼簡單,18世紀的伯努利就已解出了運動的所有可能軌跡,用合適的座標,就能用簡單的曲線描述。但僅僅是多了乙個天體,就要等到19世紀的龐加萊,才給出了差強人意的答案:沒有漂亮的解(正式術語是三體系統是不可積的)。這並非因為人類的智慧型所限,而是從本質上來說,三個天體之間的運動軌跡不可能用簡單的式子表達。自然並不像原來期盼的那麼簡單,它的複雜性令人絕望。但正是這種複雜性孕育了無數可能。並非所有三體系統都不可理解,通過合適的構造,我們可以得到一些會沿著既定曲線運轉的系統。通過合適地安排速度和位置,我們也可以使其中一顆星體按照任意給定的順序探訪其餘兩顆星體。但這些系統是如此脆弱,一點點擾動就會打破微妙的平衡,後果可能是其中一顆星體被拋射出去,從此分道揚鑣。混沌,似乎代表了無盡的不確定性,以及所帶來的恐懼,就像我們的祖先曾感受過的那樣。

軟體執行後,會有三個大點的球代表恆星,三個球互相影響著旋轉.可以為三體世界新增乙個行星,和乙個彗星.可以看到行星的恆紀元,亂紀元.

程式啟動後,會出現三個隨機大小的球體在運動.

滑鼠右鍵用於控制視角

鍵盤u用於開關ui使用者介面.

通過ui使用者介面可以設定三個球體的質量,設定萬有引力係數,設定天體執行速度,設定球體的顯示大小.

鍵盤1,2,3用於開關三個球體運動軌跡的顯示

鍵盤9,用於開關行星,啟動後,會有乙個小球體被三體所吸引

鍵盤0,用於開關慧星,啟動後,會有發射乙個球體.

鍵盤4,5分別用於開關行星和彗星運動軌跡的顯示

鍵盤g,用於開關三維網格的顯示

鍵盤c,用於開關座標軸的顯示

鍵盤p,用於暫停

鍵盤r,用於重置,這時會隨機為三個球體設定質量與初速度.

如果對n體運動有興趣可以看下我的下篇文章:n體運動的程式模擬

三體運動的程式模擬

前幾天看了 三體 很不錯的科幻 說到三體,我想到我大學的乙個舍友叫王晶,和香港那個導演同名同姓同性別.記得有一次幾個同學在一塊聊天,有個女生問他 父母為什麼給他取名叫晶.他說叫晶是父母希望能有三個太陽守護著他。那時我還很單純,不會用五行缺什麼的話來諷刺他,只是說,如果給他起名叫王晶晶的話,那就有6個...

unity 模擬三體運動

以乙個三體迷和碼農的身份確定一下三體問題的無解threebody demo 1.軌跡 首先在執行之前得 一下執行軌跡,修改引數得到不同的軌跡 2.三體問題的特殊解 通過維基百科鏈結到一篇相關 a remarkable periodic solution of the three body probl...

PMAC應用三 運動程式

線性移動引數說明 結後語前面我們已經知道了怎麼定義乙個座標系,現在我們可以開始先建立乙個座標系1,再編寫乙個簡單的運動程式,先來看乙個例子。undefine all 清除所有座標系定義 1 定義乙個座標系 1 x 將1號電機分配給x軸 2 y 將2號電機分配給y軸 3 z 將3號電機分配給z軸 op...