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