/// <summary> /// Calculates lunar eclipse map /// </summary> /// <param name="eclipse">Eclipse general details</param> /// <param name="elements">Besselian elements for the eclipse</param> /// <returns>Eclipse map</returns> public static LunarEclipseMap EclipseMap(LunarEclipse eclipse, PolynomialLunarEclipseElements elements) { return(new LunarEclipseMap() { PenumbralBegin = !double.IsNaN(eclipse.JulianDayFirstContactPenumbra) ? FindCurvePoints(elements.GetInstantBesselianElements(eclipse.JulianDayFirstContactPenumbra)) : null, PartialBegin = !double.IsNaN(eclipse.JulianDayFirstContactUmbra) ? FindCurvePoints(elements.GetInstantBesselianElements(eclipse.JulianDayFirstContactUmbra)) : null, TotalBegin = !double.IsNaN(eclipse.JulianDayTotalBegin) ? FindCurvePoints(elements.GetInstantBesselianElements(eclipse.JulianDayTotalBegin)) : null, TotalEnd = !double.IsNaN(eclipse.JulianDayTotalEnd) ? FindCurvePoints(elements.GetInstantBesselianElements(eclipse.JulianDayTotalEnd)) : null, PartialEnd = !double.IsNaN(eclipse.JulianDayLastContactUmbra) ? FindCurvePoints(elements.GetInstantBesselianElements(eclipse.JulianDayLastContactUmbra)) : null, PenumbralEnd = !double.IsNaN(eclipse.JulianDayLastContactPenumbra) ? FindCurvePoints(elements.GetInstantBesselianElements(eclipse.JulianDayLastContactPenumbra)) : null, }); }
private static LunarEclipseLocalCircumstancesContactPoint GetLocalCircumstancesContactPoint(double jd, LunarEclipse eclipse, PolynomialLunarEclipseElements e, CrdsGeographical g) { if (!double.IsNaN(jd)) { return(new LunarEclipseLocalCircumstancesContactPoint(e.GetInstantBesselianElements(jd), g)); } else { return(null); } }
public static LunarEclipseLocalCircumstances LocalCircumstances(LunarEclipse eclipse, PolynomialLunarEclipseElements e, CrdsGeographical g) { return(new LunarEclipseLocalCircumstances() { Location = g, PenumbralBegin = GetLocalCircumstancesContactPoint(eclipse.JulianDayFirstContactPenumbra, eclipse, e, g), PartialBegin = GetLocalCircumstancesContactPoint(eclipse.JulianDayFirstContactUmbra, eclipse, e, g), TotalBegin = GetLocalCircumstancesContactPoint(eclipse.JulianDayTotalBegin, eclipse, e, g), Maximum = GetLocalCircumstancesContactPoint(eclipse.JulianDayMaximum, eclipse, e, g), TotalEnd = GetLocalCircumstancesContactPoint(eclipse.JulianDayTotalEnd, eclipse, e, g), PartialEnd = GetLocalCircumstancesContactPoint(eclipse.JulianDayLastContactUmbra, eclipse, e, g), PenumbralEnd = GetLocalCircumstancesContactPoint(eclipse.JulianDayLastContactPenumbra, eclipse, e, g), }); }