示例#1
0
        public NightshiftTicker(ImageDatabase newImageDatabase, SunriseSunset newSunriseSunset)
        {
            imageDatabase = newImageDatabase;
            sunriseSunset = newSunriseSunset;

            lastId = -1;
        }
示例#2
0
        static double GetNightIndex(LocalTime time, SunriseSunset sunriseSunset)
        {
            var transitionInterval = 1.0;
            var timeHours          = TimeToHours(time);
            var sunriseHours       = TimeToHours(sunriseSunset.Sunrise);
            var sunsetHours        = TimeToHours(sunriseSunset.Sunset);

            var sunriseDelta = sunriseHours - timeHours;
            var sunsetDelta  = timeHours - sunsetHours;
            var minAbsDelta  = Min(Abs(sunriseDelta), Abs(sunsetDelta));

            if (sunriseHours < sunsetHours)
            {
                if (sunriseDelta >= 0 || sunsetDelta >= 0)
                {
                    var minDelta = minAbsDelta;
                    if (minDelta >= transitionInterval / 2)
                    {
                        return(1);
                    }
                    return((minDelta + transitionInterval / 2) / transitionInterval);
                }
                else
                {
                    var maxDelta = -minAbsDelta;
                    if (maxDelta <= -transitionInterval / 2)
                    {
                        return(0);
                    }
                    return((transitionInterval / 2 + maxDelta) / transitionInterval);
                }
            }
            else
            {
                if (sunriseDelta >= 0 && sunsetDelta >= 0)
                {
                    var minDelta = minAbsDelta;
                    if (minDelta >= transitionInterval / 2)
                    {
                        return(1);
                    }
                    return((minDelta + transitionInterval / 2) / transitionInterval);
                }
                else
                {
                    var maxDelta = -minAbsDelta;
                    if (maxDelta <= -transitionInterval / 2)
                    {
                        return(0);
                    }
                    return((transitionInterval / 2 + maxDelta) / transitionInterval);
                }
            }
        }