Exemplo n.º 1
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.º 2
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);
        }