首頁/ 遊戲/ 正文

ASCII碼模擬星系碰撞:牛頓引力定律融合C++的「奇蹟」

還記得上次那個用ASCII實現光線追蹤技術的國外小哥嗎?

沒錯,他又有新動作了!

這次,他再一次使用ASCII碼模擬了碰撞的星系,同樣,全過程都是用C++實現的。

毫無疑問,這個最新的專案一經出現,就在Reddit上收攬了2。5K+熱度。

下圖就是

星球即將碰撞的一瞬間

ASCII碼模擬星系碰撞:牛頓引力定律融合C++的「奇蹟」

此外,小哥還模仿了兩顆星球在相反方向進行旋轉的過程:

ASCII碼模擬星系碰撞:牛頓引力定律融合C++的「奇蹟」

ASCII碼模擬星系碰撞:牛頓引力定律融合C++的「奇蹟」

ASCII碼模擬星系碰撞:牛頓引力定律融合C++的「奇蹟」

用牛頓引力定律助力星系碰撞

這些神奇的效果是怎麼實現的呢?

小哥在他的影片裡簡單介紹了一下基本的過程和原理:

ASCII碼模擬星系碰撞:牛頓引力定律融合C++的「奇蹟」

首先,使用牛頓引力定律,他實現了重力的模擬。

ASCII碼模擬星系碰撞:牛頓引力定律融合C++的「奇蹟」

使用這個公式,他就可以預測任何數量的物體的運動趨勢:

ASCII碼模擬星系碰撞:牛頓引力定律融合C++的「奇蹟」

ASCII碼模擬星系碰撞:牛頓引力定律融合C++的「奇蹟」

下圖還模擬了日地月三個星球的運動狀態:

ASCII碼模擬星系碰撞:牛頓引力定律融合C++的「奇蹟」

整個實驗的程式碼地址:

github。com/DinoZ1729/Galaxy

ASCII碼模擬星系碰撞:牛頓引力定律融合C++的「奇蹟」

諸多專案妙趣橫生,只有想不到沒有做不到

除此之外,小哥還放上了另外三個專案的影片連結:

一個是「在c++控制檯模擬10,000雙擺」:

影片連結:

https://www。youtube。com/watch?v=DMOK5BS6KJw

下面是一個

雙擺的運動

狀態:

ASCII碼模擬星系碰撞:牛頓引力定律融合C++的「奇蹟」

ASCII碼模擬星系碰撞:牛頓引力定律融合C++的「奇蹟」

下圖是兩個雙擺:

ASCII碼模擬星系碰撞:牛頓引力定律融合C++的「奇蹟」

下面是10000個雙擺的運動情況:

ASCII碼模擬星系碰撞:牛頓引力定律融合C++的「奇蹟」

這個專案是「Boids|模擬魚類和鳥類的運動」:

影片連結:

https://www。youtube。com/watch?v=mev2cgRN9Zo

ASCII碼模擬星系碰撞:牛頓引力定律融合C++的「奇蹟」

下圖是魚群和鳥群的運動狀態:

ASCII碼模擬星系碰撞:牛頓引力定律融合C++的「奇蹟」

他使用了三種簡單的規則來模擬運動狀態:

ASCII碼模擬星系碰撞:牛頓引力定律融合C++的「奇蹟」

而沒有了這三種規則的限制,情況會是下圖這樣:

ASCII碼模擬星系碰撞:牛頓引力定律融合C++的「奇蹟」

可以看出,在沒有規則的限制下,運動軌跡會是完全混亂的。

此外,這個小哥還在他的github和youtube頻道上持續更新最新的專案和影片,感興趣的小夥伴可以前去持續關注哦!

參考連結:

https://www。reddit。com/r/programming/comments/l3f5v4/i_created_an_ascii_simulation_of_colliding/

相關文章

頂部