예제 #1
0
        public void PerformMoonCorrection()
        {
            int moonPosition;
            int sunPosition = _sun.Get();

            moonPosition = sunPosition + 29;
            if (moonPosition >= 57)
            {
                moonPosition = moonPosition - 56;
            }
            _moon.Set(moonPosition);
        }
예제 #2
0
        private static void DrawSunRing(RenderWindow app, ISunModel sun)
        {
            var sunRing      = ElementDrawer.CreateRing(app, 240, new Color(255, 255, 255), true);
            var sunPegPoints = ElementDrawer.CreatePegPoints(app, sunRing, 56, (Math.PI * 2) / 56);

            Array.Reverse(sunPegPoints);
            sunPegPoints[sun.Get() - 1].FillColor = new Color(255, 0, 0);
            foreach (var p in sunPegPoints)
            {
                app.Draw(p);
            }
        }
        public bool CheckLunarEclipse()
        {
            bool isEclipse = false;

            bool node1SunAligned = false;

            if (_nodesModel.GetNode1Position() == _sunModel.Get() || _nodesModel.GetNode1Position() == _sunModel.Get() - 1 || _nodesModel.GetNode1Position() == _sunModel.Get() + 1)
            {
                node1SunAligned = true;
            }

            bool node1MoonAligned = false;

            if (_nodesModel.GetNode1Position() == _moonModel.Get() || _nodesModel.GetNode1Position() == _moonModel.Get() - 1 || _nodesModel.GetNode1Position() == _moonModel.Get() + 1)
            {
                node1MoonAligned = true;
            }

            bool node2SunAligned = false;

            if (_nodesModel.GetNode2Position() == _sunModel.Get() || _nodesModel.GetNode2Position() == _sunModel.Get() - 1 || _nodesModel.GetNode2Position() == _sunModel.Get() + 1)
            {
                node2SunAligned = true;
            }

            bool node2MoonAligned = false;

            if (_nodesModel.GetNode2Position() == _moonModel.Get() || _nodesModel.GetNode2Position() == _moonModel.Get() - 1 || _nodesModel.GetNode2Position() == _moonModel.Get() + 1)
            {
                node2MoonAligned = true;
            }

            if ((node1SunAligned == true && node2MoonAligned == true) || (node2SunAligned == true && node1MoonAligned == true))
            {
                isEclipse = true;
            }

            return(isEclipse);
        }
        private static void DrawSunRing(SKImageInfo info, SKCanvas canvas, ISunModel sun)
        {
            var sunRing = ElementDrawer.CreateRing(info, canvas, Utility.GetWidthValueFromPercentage(info, (float)37.5), new Color(255, 255, 255, 0), true);

            sunRing.FillColor = new Color(255, 255, 0, 0);
            var sunPegPoints = ElementDrawer.CreatePegPoints(info, canvas, sunRing, 56);

            sunPegPoints[sun.Get() - 1].FillColor = new Color(255, 0, 0);
            foreach (var p in sunPegPoints)
            {
                canvas.DrawCircle(p.x, p.y, p.Radius, GetPointPainter(p));
            }
        }