Exemplo n.º 1
0
 /// <inheritdoc />
 public SolarEclipse GetNearestSolarEclipse(int ln, bool next, bool saros)
 {
     do
     {
         ln += (next ? 1 : -1) * (saros ? 223 : 1);
         var eclipse = SolarEclipses.NearestEclipse(ln, next);
         if (eclipse.IsUncertain)
         {
             var  pbe     = GetBesselianElements(eclipse.JulianDayMaximum);
             var  be      = pbe.GetInstantBesselianElements(eclipse.JulianDayMaximum);
             bool isExist = Math.Sqrt(be.X * be.X + be.Y * be.Y) - be.L1 <= 0.999;
             if (isExist)
             {
                 eclipse.IsUncertain = false;
                 return(eclipse);
             }
             else
             {
                 continue;
             }
         }
         else
         {
             return(eclipse);
         }
     }while (true);
 }
Exemplo n.º 2
0
        public void FindNearestSolarEclipse()
        {
            double       jd      = new Date(1993, 5, 21).ToJulianDay();
            SolarEclipse eclipse = SolarEclipses.NearestEclipse(jd, true);

            Assert.AreEqual(2449129.0979, eclipse.JulianDayMaximum, TimeSpan.FromMinutes(0.36).TotalDays);
            Assert.AreEqual(SolarEclipseType.Partial, eclipse.EclipseType);
            Assert.AreEqual(0.740, eclipse.Magnitude, 1e-3);
        }