///// <summary> ///// Compute the angle in degrees per day 'n' ///// </summary> ///// <param name="model"></param> ///// <returns></returns> //public static double GetAnglePerDay(this KeplerianDateModel model) //{ // return KeplerianHelper.GetAnglePerDay(model.Values.SemiMajorAxis); //} ///// <summary> ///// Compute the mean anomaly 'M' ///// </summary> ///// <param name="model"></param> ///// <returns></returns> //public static double GetMeanAnomaly(this KeplerianDateModel model) //{ // return (model.Values.MeanLongitude - model.Values.PerihelionLongitude) % 360; //} ///// <summary> ///// Compute the mean anomaly 'M' ///// </summary> ///// <param name="model"></param> ///// <returns></returns> //public static double GetMeanAnomalyForDay(this KeplerianDateModel model) //{ // return (model.Values.MeanLongitude - model.Values.PerihelionLongitude) % 360; //} /// <summary> /// Compute the true anomaly 'ν' /// </summary> /// <param name="model"></param> /// <returns></returns> public static double GetEccentricAnomaly(this KeplerianDateModel model) { var eccentricity = model.Values.Eccentricity; var meanAnomaly = model.Values.GetMeanAnomaly360(); return(KeplerianHelper.GetEccentricAnomaly(eccentricity, meanAnomaly)); }
public KeplerianDateModel( DateTimeOffset referenceDate, KeplerianModel keplerianModel) { ReferenceDate = referenceDate; DaysDifference = KeplerianHelper.GetDaysDifference(referenceDate); J2000CenturyFactor = KeplerianHelper.GetJ2000CenturyFactor(referenceDate); Values = keplerianModel.GetKeplerianValueModel(J2000CenturyFactor); }
public KeplerianCalculationModel(KeplerianDateModel model) { MeanAnomaly = model.Values.GetMeanAnomaly360(); EccentricAnomaly = new DegreeModel(KeplerianHelper.GetEccentricAnomaly(model.Values.Eccentricity, MeanAnomaly)); TrueAnomaly = new DegreeModel(KeplerianHelper.GetEccentricAnomaly2(model.Values.Eccentricity, MeanAnomaly)); TrueAnomaly = EccentricAnomaly; AverageCentricDistance = KeplerianHelper.GetAverageCentricDistance(model.Values.SemiMajorAxis.Degrees, model.Values.Eccentricity); CentricDistance = KeplerianHelper.GetCentricDistance(AverageCentricDistance, model.Values.Eccentricity, TrueAnomaly); Location = KeplerianHelper.GetLocation(CentricDistance, model.Values.AscendingNodeLongitude, model.Values.GetArgumentOfPerihelion(), TrueAnomaly, model.Values.Inclination); }
public void KeplerianHelperGetJ2000CenturyFactorTest() { var value = KeplerianHelper.GetJ2000CenturyFactor(new DateTimeOffset(1900, 1, 1, 0, 0, 0, TimeSpan.Zero)); Assert.True(value.EqualsWithinTolerance(-1, 5)); value = KeplerianHelper.GetJ2000CenturyFactor(new DateTimeOffset(2000, 1, 1, 0, 0, 0, TimeSpan.Zero)); Assert.Equal(0, value); value = KeplerianHelper.GetJ2000CenturyFactor(new DateTimeOffset(2100, 1, 1, 0, 0, 0, TimeSpan.Zero)); Assert.True(value.EqualsWithinTolerance(1, 4)); }
public void KeplerianHelperTEst() { var centricDistance = 5.40406; var ascendingNodeLongitude = new DegreeModel(100.464); var perihelionOmega = new DegreeModel(273.867); var trueAnomaly = new DegreeModel(144.637); var inclination = new DegreeModel(1.303); var location = KeplerianHelper.GetLocation(centricDistance, ascendingNodeLongitude, perihelionOmega, trueAnomaly, inclination); var x = location.X; var y = location.Y; var z = location.Z; Assert.True(x.EqualsWithinTolerance(-5.04289, 4)); Assert.True(y.EqualsWithinTolerance(1.93965, 4)); Assert.True(z.EqualsWithinTolerance(0.10478, 4)); }