標籤:style blog http os 使用 ar 2014 sp 問題
前幾天看了《三體》,很不錯的科幻小說。說到三體,我想到我大學的一個舍友叫王晶,和香港那個導演同名同姓同性別.記得有一次幾個同學在一塊聊天,有個女生問他:父母為什麼給他取名叫晶.他說叫晶是父母希望能有三個太陽守護著他。那時我還很單純,不會用五行缺什麼的話來諷刺他,只是說,如果給他起名叫王晶晶的話,那就有6個太陽守護他了.現在對三體有了一些瞭解,才意識到被三個太陽罩著,那不叫守護,應該是被蹂躪.三體內的行星,感覺是被三個恒星玩弄於股掌之間,如同球一樣踢來踢去.
空間中三個星體,受萬有引力作用下的運動被稱為三體運動,這是最簡單且令人信服的混沌。混沌確定系統是龐加萊在研究三體問題時第一次發現的。僅僅三顆星體的運動,就能變得複雜而眩目。這種複雜曾令數學家們在百年間困惑不已。如果只有兩個天體,那麼一切是多麼簡單,18世紀的伯努利就已解出了運動的所有可能軌跡,用合適的座標,就能用簡單的曲線描述。但僅僅是多了一個天體,就要等到19世紀的龐加萊,才給出了差強人意的答案:沒有漂亮的解(正式術語是三體系統是不可積的)。這並非因為人類的智慧所限,而是從本質上來說,三個天體之間的運動軌跡不可能用簡單的式子表達。自然並不像原來期盼的那麼簡單,它的複雜性令人絕望。但正是這種複雜性孕育了無數可能。並非所有三體系統都不可理解,通過合適的構造,我們可以得到一些會沿著既定曲線運轉的系統。通過合適地安排速度和位置,我們也可以使其中一顆星體按照任意給定的順序探訪其餘兩顆星體。但這些系統是如此脆弱,一點點擾動就會打破微妙的平衡,後果可能是其中一顆星體被拋射出去,從此分道揚鑣。混沌,似乎代表了無盡的不確定性,以及所帶來的恐懼,就像我們的祖先曾感受過的那樣。
軟體運行後,會有三個大點的球代表恒星,三個球互相影響著旋轉.可以為三體世界添加一個行星,和一個彗星.可以看到行星的恒紀元,亂紀元.
代碼使用萬有引力和勢能動能守恒定律為基礎,詳細見我上一篇文章:行星運動軌跡的程式實現.當然程式寫得很簡化,其精度是沒法保證的.如果真要做精確的話,微積分是必需的.還有就是在恒紀元時,行星容易進入恒星的內部,所以我做了點篡改,保證行星在恒星外部旋轉.這一修改會使用行星的軌跡線不夠平滑.
程式啟動後,會出現三個隨機大小的球體在運動.
滑鼠右鍵用於控制視角
鍵盤U用於開關UI使用者介面.
通過UI使用者介面可以設定三個球體的品質,設定萬有引力係數,設定天體運行速度,設定球體的顯示大小.
鍵盤1,2,3用於開關三個球體運動軌跡的顯示
鍵盤9,用於開關行星,啟動後,會有一個小球體被三體所吸引
鍵盤0,用於開關慧星,啟動後,會有發射一個球體.
鍵盤4,5分別用於開關行星和彗星運動軌跡的顯示
鍵盤G,用於開關三維網格的顯示
鍵盤C,用於開關座標軸的顯示
鍵盤P,用於暫停
鍵盤R,用於重設,這時會隨機為三個球體設定品質與初速度.
軟體:http://files.cnblogs.com/WhyEngine/Chaos.7z
三體運動的程式類比