/// <summary> /// 计算真近点角从f1飞行到f2的时间(f1,f2的区间在[0,2*pi]),f1沿逆时针飞行到f2 /// </summary> /// <param name="f1">初始真近点角(rad)</param> /// <param name="f2">终点真近点角(rad)</param> /// <param name="sma">半长轴</param> /// <param name="ecc">偏心率</param> /// <param name="mu">引力常数</param> /// <returns></returns> public static double ComputeTimeOfFlight(double f1, double f2, double sma, double ecc, double mu) { double dt = KeplerianElements.ComputeTimeOfFlight(Round0_2Pi(f1), Round0_2Pi(f2), sma, ecc, mu); if (dt < 0) { dt = KeplerianElements.SemimajorAxisToPeriod(sma, mu) + dt; } return(dt); }
public static void testTimeOfFlight() { double mu = 3.986004418e5; double sma = 7078.14; double ecc = 0.1; double f1 = 0.0; double f2 = Math.PI * 2.0; double t0 = ComputeTimeOfFlight(f1, f2, sma, ecc, mu); double t1 = ComputeTimeOfFlight(0, 2.0, sma, ecc, mu); double t2 = ComputeTimeOfFlight(-2.0, 0, sma, ecc, mu); double t2p = KeplerianElements.ComputeTimeOfFlight(-2.0, 0, sma, ecc, mu); double T = KeplerianElements.SemimajorAxisToPeriod(sma, mu); }