public static SkyPositionModel GetSkyPosition( this CelestialObjectPositionModel celestialObjectPosition, double latitude, SideRealTimeModel siderealTime) { return(GetSkyPosition(celestialObjectPosition.Declination, latitude, siderealTime.DateTimeOffset, siderealTime.SideRealTime)); }
public static RiseTransitSetModel GetRiseTransitSet( this CelestialObjectPositionModel celestialObjectPosition, CelestialObjectPositionModel earthPosition, double longitudeDegrees, double latitudeDegrees) { var transitTimeSpan = celestialObjectPosition.GetTransitTimeSpan(earthPosition, longitudeDegrees); var transit = new DateTimeOffset( celestialObjectPosition.ReferenceDate.DateTime.Year, celestialObjectPosition.ReferenceDate.DateTime.Month, celestialObjectPosition.ReferenceDate.DateTime.Day, transitTimeSpan.Hours, transitTimeSpan.Minutes, transitTimeSpan.Seconds, transitTimeSpan.Milliseconds, TimeSpan.Zero); var hourHorizonDegrees = celestialObjectPosition.GetHourHorizon(latitudeDegrees, 0); var hourHorizonTimeSpan = DegreeHelper.DegreeToTimeSpan(hourHorizonDegrees); var rise = transit - hourHorizonTimeSpan; var set = transit + hourHorizonTimeSpan; return(new RiseTransitSetModel(rise, transit, set)); }
public static double GetSiderealTime( this CelestialObjectPositionModel celestialObjectPosition, CelestialObjectModel celestialObject, KeplerianOrbitValueModel keplerianOrbitValue, DateTimeOffset referenceDate) { return(celestialObjectPosition.GetCelestialObjectSiderealTime(celestialObject, keplerianOrbitValue, (int)Math.Round(referenceDate.TimeOfDay.TotalMinutes), referenceDate.Offset.Minutes)); }
/// <summary> /// Θ = MEarth + ΠEarth + 15° (t+tz) (mod360°) /// </summary> /// <param name="celestialObjectPosition"> /// The celestial Object Position.</param> /// <param name="minuteConstant">degree ratation per minute</param> /// <param name="keplerianOrbitValue"></param> /// <param name="utcMinutes"></param> /// <returns></returns> private static double GetSiderealTime( this CelestialObjectPositionModel celestialObjectPosition, double minuteConstant, KeplerianOrbitValueModel keplerianOrbitValue, int utcMinutes) { return(GetSiderealTime(celestialObjectPosition.MeanAnomaly, minuteConstant, keplerianOrbitValue, utcMinutes)); }
public static double GetCelestialObjectSiderealTime( this CelestialObjectPositionModel celestialObjectPosition, CelestialObjectModel celestialObject, KeplerianOrbitValueModel keplerianOrbitValue, int minute, int minuteOffset) { return(celestialObjectPosition.GetCelestialObjectSiderealTime(celestialObject, keplerianOrbitValue, minute - minuteOffset)); }
/// <summary> /// Θ = MEarth + ΠEarth + 15° (t+tz) (mod360°) /// </summary> /// <param name="celestialObjectPosition"> /// The celestial Object Position.</param> /// <param name="celestialObject">The celestial Object.</param> /// <param name="keplerianOrbitValue"></param> /// <param name="utcMinutes"></param> /// <returns></returns> private static double GetCelestialObjectSiderealTime( this CelestialObjectPositionModel celestialObjectPosition, CelestialObjectModel celestialObject, KeplerianOrbitValueModel keplerianOrbitValue, int utcMinutes) { var minuteConstant = celestialObject.SiderealRotationPeriod / (int)Interval.Day; return(celestialObjectPosition.GetSiderealTime(minuteConstant, keplerianOrbitValue, utcMinutes)); }
public static double GetTransitDegrees( this CelestialObjectPositionModel celestialObjectPosition, CelestialObjectPositionModel earthPosition, double longitudeDegrees) { return(GetTransitDegrees( celestialObjectPosition.RightAscension, earthPosition.MeanAnomaly, longitudeDegrees)); }
public static IEnumerable <SideRealTimeModel> GetEarthSiderealTimePerDay( this CelestialObjectPositionModel celestialObjectPosition, Interval interval, int hourRange) { return(GetEarthSiderealTimePerDay( celestialObjectPosition.MeanAnomaly, celestialObjectPosition.ReferenceDate, interval, hourRange)); }
public static TimeSpan GetTransitTimeSpan( this CelestialObjectPositionModel celestialObjectPosition, CelestialObjectPositionModel earthPosition, double longitudeDegrees) { var degrees = celestialObjectPosition.GetTransitDegrees( earthPosition, longitudeDegrees); return(DegreeHelper.DegreeToTimeSpan(degrees)); }
public static IEnumerable <SkyPositionModel> GetSkyPositions( this CelestialObjectPositionModel celestialObjectPosition, double latitude, List <SideRealTimeModel> siderealTimes, RiseTransitSetModel transitModel) { foreach (var sideRealTime in siderealTimes.Where(x => x.DateTimeOffset >= transitModel.Rise && x.DateTimeOffset <= transitModel.Set)) { yield return(celestialObjectPosition.GetSkyPosition(latitude, sideRealTime)); } }
private static double GetHourHorizon( this CelestialObjectPositionModel celestialObjectPosition, double latitudeDegrees, double h0) { if (h0.EqualsWithinTolerance(0, 6)) { return(DegreeHelper.RadiansToDegrees( Math.Acos( -MathDegrees.Tan(latitudeDegrees) * MathDegrees.Tan(celestialObjectPosition.Declination)))); } return(DegreeHelper.RadiansToDegrees(Math.Acos( (MathDegrees.Sin(h0) - (MathDegrees.Sin(latitudeDegrees) * MathDegrees.Sin(celestialObjectPosition.Declination))) / (MathDegrees.Cos(latitudeDegrees) * MathDegrees.Cos(celestialObjectPosition.Declination))))); }
public static double GetEarthSiderealTimeMidnight( this CelestialObjectPositionModel celestialObjectPosition) { return(GetEarthSiderealTimeMidnight(celestialObjectPosition.MeanAnomaly, celestialObjectPosition.ReferenceDate)); }