作者:电子

众所周知,我们经常会遇到亚轨道需要第二次点火的亚轨道情形,而何时、如何、点火多久则是重中之重的难题。以下我将会分3步走,教你如何达到高质量的圆轨。

第一步,计算圆轨的根基——Δv

无论我们采用什么样子的圆轨方式,Δv都是必不可缺的。因此,首先我们需要计算出以当前亚轨道最高点与行星半径之和为半径的圆轨(如图所示,圆轨半径为线段AB,在后文中,AB均用ra表示)的轨道速度vc

同时,我们也要计算出当前亚轨道最高点的速度va

由此就可以得到变轨到圆轨所需的Δv=vc-va

因此,我们只需要计算出vc和va即可

1.计算va

这是开普勒椭圆轨道极坐标方程

r(θ)=a(1e2)1+ecosθr(\theta) = \frac{a\left(1 - e^{2}\right)}{1 + e\cos\theta}

在远地点,真近地角θ=180°,所以r(θ)在概念定义上

来说,就是当前亚轨道最高点与行星半径之和ra

因此,椭圆轨道(本质上,亚轨道就是椭圆轨道,只是近地点在地球里面)半长轴a的表达式a=ra1+ea = \frac{r_a}{1 + e}

所以我们可以根据活力公式v2=GM(2r1a)v^{2} = GM\left(\dfrac{2}{r} - \dfrac{1}{a}\right) ,带入r=ra以及上述半长轴a的表达式,得到

va=GM(1e)rav_{a} = \sqrt{\dfrac{GM(1 - e)}{r_{a}}}

2.计算vc

我们都知道,在圆轨中,圆周运动向心力=万有引力,即mvc2ra=GMmra2\frac{m v_c^2}{r_a} = G \frac{M m}{r_a^2}

由此可得vc=GMrav_c = \sqrt{\frac{G M}{r_a}}

3.计算Δv

综上所述,可知Δv=vcva=GMraGM(1e)ra\Delta v = v_c - v_a = \sqrt{\frac{GM}{r_a}} - \sqrt{\frac{GM(1-e)}{r_a}}

在游戏中的形式如下

第二步,点火时机和姿态确认

除非我们的火箭是脉冲的,否则最佳点火时机绝对不可能是远地点处点火。因此我们需要早一点就点火。我经过计算发现,在我们知道点火的总时长tb后,当到达远地点还有tb2\frac{t_b}{2} 秒时点火,此时圆轨效果极佳。此外,当火箭姿态设置为水平速度的方向时,此时圆轨效率最快,并且亚轨道最高点也仅仅只有水平速度。这个姿态计算很简单,先将速度投影到位置上得到新向量a,再用速度减去新向量a即可。如图即为在游戏中的形式

所以,我们现在只需要计算点火时间,即可完成程序制作

第三步,计算点火时间

根据齐奥尔科夫斯基火箭方程ΔV=veln(minitialmfinal)\Delta V = v_e \ln\left( \frac{m_{\text{initial}}}{m_{\text{final}}} \right)

排气速度与比冲的定义式ve=Ispgv_e = I_{sp} \cdot g

燃料消耗量的基础定义mf=minitialmfinalm_f = m_{\text{initial}} - m_{\text{final}}

可以得出燃料消耗量mfm_f的表达式

mf=minitial[1exp(ΔVIspg)]m_f = m_{\text{initial}} \left[1 - \exp\left(-\frac{\Delta V}{I_{sp} g}\right)\right]

但是,jno里面没有exp这个模块,可能很多人也是第一次听说这个东西,但是说白了,exp的定义就是exp(a)=ea\exp(a) = e^{a} 而已,所以原来的表达式就可以化成

mf=minitial[1e(ΔVIspg)]m_f = m_{\text{initial}} \left[1 - e^{\left(-\frac{\Delta V}{I_{sp} g}\right)}\right]

我们又知道,F=m˙veF = \dot{m} \cdot v_e (其中m˙\dot{m} 指的是质量流率,即单位时间喷出的推进剂质量),变形可得m˙=Fve=FIspg\dot{m} = \frac{F}{v_e} = \frac{F}{I_{sp} g}

且点火总时长=耗燃料量/质量流率,所以我们得到了点火总时长的表达式Tb=mfm˙=mfIspgFT_b = \frac{m_f}{\dot{m}} = \frac{m_f \cdot I_{sp} \cdot g}{F}

所以,在到达远地点还有Tb/2T_b/2秒时点火,并且姿态保持水平速度的方向,点火保持TbT_b秒后关机,即可进入圆轨。当然,引擎关机不是立刻关机,它还会短暂燃烧一段时间,所以最好是点火保持Tbt1T_b-t_1秒后再关机,这个t1t_1差不多0.1~0.3秒即可,当然还是需要大家根据自己火箭,试试看究竟多少才是效果最好的。

最后是程序全图展示。

注:推力和比冲需要在引擎工作的时候就测。如果在引擎关机时测,会导致两个数据都是0