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