Example #1
0
        ///// <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));
        }