Example #1
0
        static public Tuple <double, double, double> GetMoonIllumination(DateTime date)
        {
            double d = ToDays(date);
            var    s = SunCalculator.SunCoords(d);
            var    m = MoonCoords(d);

            int sdist = 149598000;

            double phi   = Math.Acos(Math.Sin(s.dec) * Math.Sin(m.dec) + Math.Cos(s.dec) * Math.Cos(m.dec) * Math.Cos(s.asc - m.asc)),
                   inc   = Math.Atan2(sdist * Math.Sin(phi), m.dist - sdist * Math.Cos(phi)),
                   angle = Math.Atan2(Math.Cos(s.dec) * Math.Sin(s.asc - m.asc), Math.Sin(s.dec) * Math.Cos(m.dec)
                                      - Math.Cos(s.dec) * Math.Sin(m.dec) * Math.Cos(s.asc - m.asc));

            return(new Tuple <double, double, double>(Fraction(inc), Phase(inc, angle), angle));
        }
Example #2
0
        public LightTimes(DateTime dt, Config config)
        {
            // Assuming SunCalculator is returning high noon for sunrise
            // and sunset in the winter
            SunCalculator sc = new SunCalculator(config.SiteCoords.Longitude,
                                    config.SiteCoords.Latitude,
                                    config.UTCOffset * 15,
                                    config.IsDstInEffect(dt));

            Sunrise = sc.CalculateSunRise(dt);
            LightsOffAM = Sunrise + config.SunriseOffset;

            Sunset = sc.CalculateSunSet(dt);
            LightsOnPM = Sunset + config.SunsetOffset;

            LightsOnAM = dt.Date + config.AMLightsOn;

            LightsOffPM = dt.Date + config.PMLightsOff;
        }