コード例 #1
0
        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 void GetTransitTimeSpanTest()
        {
            var expected = new TimeSpan(0, 4, 20, 41, 760);
            var actual   = JupiterPosition.GetTransitTimeSpan(EarthPosition, -5);

            Assert.Equal(expected, actual);
        }