衛星軌道共振計算器

2021-08-26 08:20:53 字數 1512 閱讀 6627

寫了乙個小小的matlab程式,用來計算共振軌道。這個程式目前只能針對ksp,也即kerbal space program這個遊戲原版內建的星體。

共振軌道在通訊衛星和導航衛星的部署(例如一箭雙星的北斗)方面,具有非常重要的意義。兩條相切軌道共振,其週期呈現整數倍,這樣,一條軌道上的母衛星通過在切點釋放子衛星,然後子衛星進行軌道調整的方式,就可以在數個週期內(例如部署三顆子衛星需要三個週期),將子衛星均勻精確部署在軌道上。

這種方法經濟性好(火箭單次發射成本高),操作性強(母星幾乎不需要變軌機動),效果出眾(軌道均勻整齊),而且觀賞性強(說白了就是利於裝x),所以非常好,非常棒。

這個程式非常簡單,就是依據克卜勒定律計算軌道半長軸。程式涉及三條軌道。第一條是衛星最終規劃部署所在的正圓軌道a,離心率是0,週期為t。第二條是軌道低點(近地點,perigee,或者periapsis)與正圓軌道a相切,軌道高點(遠地點,apogee,或者apoapsis)高於a的橢圓軌道,焦點是繞轉星體的橢圓軌道,其週期為(n+1)t/n。第三條是軌道高點與a相切,軌道低點低於a的橢圓軌道,週期為(n-1)t/n。其中,n是準備部署在軌道上的子衛星數目。根據克卜勒定律,對於同乙個公轉繞轉星體,衛星軌道半長軸的三次方與軌道週期的平方成正比(還是要說,這個是一階情況,實際情況要複雜很多)。由於t值在特定的例子內是個常參量,能夠消去,因此可以在不知道具體t值的情況下,計算出共振軌道的確切半長軸。

一般來說,n總是大於等於3,這樣才能實現無死角通訊覆蓋,例如gps衛星在同一條軌道上總是布置四顆衛星,三顆實現無死角,第四顆負責備用。n越大,兩個橢圓軌道的離心率就越小,越接近於規劃的正圓軌道a。另外,這個程式中軌道高點和低點都是星球海平面(參考平面)高度,而不是軌道半徑的長度,這與ksp遊戲中的,以及人類目前軌道描述的慣用方式一致。使用時需要注意。

以上一圖,就是我的共振軌道高度計算器執行結果圖。中間藍色的十字示意繞轉的星體,這裡是坎星系的第二顆行星,eve,類似於太陽系的金星。藍色的圓軌道是使用者計畫的最終軌道,星體是其圓心。部署完成的子衛星將在這條軌道上執行,對於這一特例,將有三顆衛星互呈120°在軌道上執行。紅色橢圓軌道與藍色圓軌道內切,是圓軌道週期的三分之二,其上的標註是其軌道近地點的高度,而其軌道遠地點高度即是藍色圓軌道的高度;綠色的橢圓軌道與藍色圓軌道外切,是圓軌道週期的三分之四,其上標註的是其軌道遠地點的高度,其軌道近地點高度即是藍色圓軌道的高度。

deploy!點位置,釋放子衛星,並操縱子衛星圓化軌道(基本不需要管母衛星,讓其維持現有軌道繼續執行即可。也可以輕微修正因釋放子衛星造成的動量損失),就可以完成一次部署。

下一步,我打算將其增補為可以計算任意已知海平面高度、海平面星球半徑的星球,共振軌道高度的計算器——當然,仍然是在一階兩體簡單引力模型下的。這樣的話,對於任何星球——當然包括地球——只要你知道其星體半徑就可以模擬部署共振軌道啦!

如果你對軌道力學感興趣,為什麼不試一試呢?

實現計算器

dim boldot as boolean dim dblacc1,dblacc2 as double dim dblacc3 as double 10 dim strop as string private sub add num byval intnumber as integer if bol...

計算器修改

在做計算器介面修改這個專案中遇見的問題。先把需求說清楚,黑莓風格的計算器裡面有觸控和非觸控兩個流程。介面,功能,和座標是不一樣的。我是要在非觸控下做出觸控螢幕的介面,除了不能觸控以外,所有的功能都要和觸控螢幕下一樣。之前先是找到資源,然後替換資源,載入,調座標,調功能,調bug。資源很快就找到了,然...

簡單計算器

unit unit1 inte ce uses windows,messages,sysutils,variants,classes,graphics,controls,forms,dialogs,stdctrls,buttons,math math是數 算單元 type tform1 class ...