python 打造天體運動(仿真三體附源碼)

最近在研究python三維運動建模,從零開始學(xué)習(xí),目標是做一個震撼好看的三體運動,如下:

目標確定好了,下面就是開始計劃如何實現(xiàn),首先想到了借助三維的庫,用什么庫呢? 三維零基礎(chǔ)的小編只能去問度娘,度娘也誠不欺我,目前三維主流的庫有VTK、OpenGL、Vpython以及Mayavi,這么多庫如何選擇呢? 一次排開站好,下面進行政審。
1、VTK 關(guān)鍵點介紹:
VTK 在OpenGL 基礎(chǔ)上用 C+ + 語言開發(fā)而成,適用于快速開發(fā)靜態(tài)三維模型。(由于我們要做動態(tài)的,所以舍棄)
2、OpenGL
從簡書大佬文章中得知,OpenGL從3.2開始,便舍棄了渲染功能,官方給出的理由是渲染導(dǎo)致OpenGL工作效率降低,且OpenGL上手較為困難,資料極少,連書都沒有,且不是開源。(由于志在炫酷震撼,無渲染不可,故舍棄)
3、Vpython
VPython是一套簡單易用的三維圖形庫,使用它可以快速創(chuàng)建三維場景和動畫。(國內(nèi)小眾,但是功能比較強大)
4、Mayavi
Mayavi更高級了,它是基于VTK開發(fā)的,適用于創(chuàng)建三位場景及動畫,還有交互式功能,目前網(wǎng)上資料較多,適合學(xué)習(xí)。
經(jīng)網(wǎng)上資料分析,適合承擔(dān)本次項目開發(fā)的軟件庫,暫定Vpython和Mayavi。
選好庫了,下面我們開安裝。
世界之大,無奇不有,一動手,就會發(fā)現(xiàn)偉大的博主們會跟你開一個玩笑~
經(jīng)各大網(wǎng)站、貼吧以及視頻之力,得出一個結(jié)論:
Vpython安裝方式直接pip,開發(fā)環(huán)境支持python3.8、python3.9、python3.10,;
至于Mayavi安裝及其費勁,需要各種包支持,并且還有先后順序要求,
事實上呢?
直接pip install?Mayavi 直接成功,而 vpython呢 ? 安裝是可以,但是一運行 ,有圖有真相:


win7 64位 + pycharm+ python3.8/python3.9/python3.10
win7?64位?+anconda 2019.10版,這個是因為anconda 內(nèi)置python 是3.7緣故安裝不了
win10 ?anconda 最新內(nèi)置python3.9/anconda 和 2020版
win10?+?pycharm+?python3.8/python3.9/python3.10
以上框架小編均一一測試,大都可以安裝vpython,但運行都報一些奇怪的錯誤,經(jīng)分析,因vpython運行需調(diào)用頁面接口,vpython可能需要谷歌頁面支持,但國內(nèi)以禁谷歌,所以調(diào)用不了,僅供參考,無法求證。
事已至此,我們只得用mayavi庫了,好在mayavi安裝如此順利(由此觀之度娘有時候也不靠譜)。
測試一個程序吧
運行,如下:

哇塞,及其的驚喜、意外!居然真有界面,還挺好看
咳, 淡定淡定,,離目標還很遠,我們繼續(xù)
下面就是怎么畫球體,這個簡單,網(wǎng)上教程一大把,隨便來一個,走起:
運行:

有了一個,就可以有三個,沒難度,直接大點步,往天體上靠攏,給出三個天體參數(shù),如下:
運行,顯示:

貼圖紋理函數(shù),修改背景色,核心代碼如下:
運行效果:


還差最后一步,就是運動了,mayavi提供animate裝飾器用來顯示動畫,經(jīng)過長時間的努力努力調(diào)試,球球終于可以運動了,不過遺憾的就是貼紋理之后,就卡主了,終究有一些小遺憾,后面我還會繼續(xù)調(diào)試,爭取圓滿完成任務(wù);當然其中的天體力學(xué)部分,也調(diào)試了很長時間,才可以讓三個星球穩(wěn)定運轉(zhuǎn),不多說,源碼如下:
顯示結(jié)果無法插入視頻,只能截幾張圖顯示了:



感興趣的童鞋們,可以自己運行一下代碼哦! 后續(xù)我在改進下星空,然后再跟大家一起分享代碼~??