Beispiel #1
0
        public Prediction Predict()
        {
            var betasoide = new Planet("Betasoide", 2000, -3);
            var ferengie  = new Planet("Ferengie", 500, -1);
            var vulcano   = new Planet("Vulcano", 1000, 5);

            double maxPerimeter = 0;
            int    maxRainyDay  = 0;

            for (int day = 1; day <= 3600; day++)
            {
                var betasoidePosition = geometricCalculator.CalculteCoordinates(betasoide.DistanceToSun, betasoide.AngularVelocity, day);
                var ferengiePosition  = geometricCalculator.CalculteCoordinates(ferengie.DistanceToSun, ferengie.AngularVelocity, day);
                var vulcanoPosition   = geometricCalculator.CalculteCoordinates(vulcano.DistanceToSun, vulcano.AngularVelocity, day);
                var weather           = Predict(betasoidePosition, ferengiePosition, vulcanoPosition);
                SetOcurrence(weather.Type);
                if (weather.Type == WeatherType.Rainy)
                {
                    var perimeterTriangule = geometricCalculator.CalculatePerimeterOfTriangule(betasoidePosition, ferengiePosition, vulcanoPosition);
                    if (perimeterTriangule > maxPerimeter)
                    {
                        maxPerimeter = perimeterTriangule;
                        maxRainyDay  = day;
                    }
                }
            }

            return(CreatePredictionResult(maxRainyDay));
        }