/// <summary>
        /// Угол наклона эклиптики к экватору.
        /// </summary>
        ///
        /// <param name="julianDate"> Юлианская дата.</param>
        ///
        /// <returns>
        /// Угол наклона эклиптики к экватору.
        /// </returns>
        private static double GetEps0(double julianDate)
        {
            double eps0 = 0, deps = 0;

            IAUSOFA.iauNut06a(Date.J2000, julianDate - Date.J2000, ref eps0, ref deps);
            // из iauP06e
            return(84381.406 * IAUSOFA.DAS2R + deps);
        }
Exemplo n.º 2
0
        /// <summary>
        /// Положение и скорость Нептуна.
        /// </summary>
        ///
        /// <param name="julianDate"> Юлианская дата.</param>
        ///
        /// <returns>
        /// Положение и скорость Нептуна.
        /// </returns>
        private static (Vector Vector, Vector Velocity, Basis Basis) NeptuneParams(double julianDate)
        {
            var pv = new double[2, 3];

            IAUSOFA.iauPlan94(Date.J2000, julianDate - Date.J2000, 8, pv);
            var vector   = new Vector(pv[0, 0], pv[0, 1], pv[0, 2]);
            var velocity = new Vector(pv[1, 0], pv[1, 1], pv[1, 2]);

            return(vector * IAUSOFA.DAU, velocity *IAUSOFA.DAU / Date.JD_TO_SECOND, new Basis());
        }
Exemplo n.º 3
0
        /// <summary>
        /// Положение и скорость невращающейся Земли.
        /// </summary>
        ///
        /// <param name="julianDate"> Юлианская дата.</param>
        ///
        /// <returns>
        /// Положение и скорость невращающейся Земли.
        /// </returns>
        private static (Vector Vector, Vector Velocity, Basis Basis) EarthParams(double julianDate)
        {
            var pvh = new double[2, 3];
            var pvb = new double[2, 3];

            IAUSOFA.iauEpv00(Date.J2000, julianDate - Date.J2000, pvh, pvb);
            var vector   = new Vector(pvh[0, 0], pvh[0, 1], pvh[0, 2]);
            var velocity = new Vector(pvh[1, 0], pvh[1, 1], pvh[1, 2]);

            return(vector * IAUSOFA.DAU, velocity *IAUSOFA.DAU / Date.JD_TO_SECOND, new Basis());
        }
Exemplo n.º 4
0
        /// <summary>
        /// Положение и скорость Луны.
        /// </summary>
        ///
        /// <param name="julianDate"> Юлианская дата.</param>
        ///
        /// <returns>
        /// Положение и скорость Луны.
        /// </returns>
        private static (Vector Vector, Vector Velocity, Basis Basis) MoonParams(double julianDate)
        {
            (Vector EarthVector, Vector EarthVelocity, Basis basis) = EarthParams(julianDate);
            var pv = new double[2, 3];

            IAUSOFA.iauPlan94(Date.J2000, julianDate - Date.J2000, 3, pv);
            Vector EMBVector   = new Vector(pv[0, 0], pv[0, 1], pv[0, 2]) * IAUSOFA.DAU;
            Vector EMBVelocity = new Vector(pv[1, 0], pv[1, 1], pv[1, 2]) * IAUSOFA.DAU / Date.JD_TO_SECOND;

            return(new Vector((EMBVector * (earth.Mass + moon.Mass) - EarthVector * earth.Mass) / moon.Mass - EarthVector),
                   new Vector((EMBVelocity * (earth.Mass + moon.Mass) - EarthVelocity * earth.Mass) / moon.Mass - EarthVelocity),
                   basis);
        }