/// <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()); }
/// <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); }