예제 #1
0
        /// <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);
        }
예제 #2
0
        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);
        }