Esempio n. 1
0
        private static double CalculateIISSpeedInKmh(SpaceStationData spaceStation, double distance)
        {
            double time  = (spaceStation.TimestampSecondRequest - spaceStation.TimestampFirstRequest) / 3600;
            double speed = (distance / 1000) / time;

            return(speed);
        }
Esempio n. 2
0
        private static double CalculateDistanceFromHaversine(double eRadius, SpaceStationData spaceStation)
        {
            double haversine = HaversineFormula(spaceStation);
            double distance  = eRadius * haversine;

            return(distance);
        }
        public CalculatedSpaceStation GetSpeedAndTotalDistance(SpaceStationData spaceStation)
        {
            double eRadius = _context.CalculationDatas.Select(d => d.EarthRadius).First();

            CalculatedSpaceStation result = CalculationFormulas.CalculateVelocityAndDistance(eRadius, spaceStation);

            return(result);
        }
        public SpaceStationData GetCombinedSpaceStationData(SpaceStationData firstRequestObject, SpaceStationData secondRequestObject)
        {
            if (!firstRequestObject.MessageFirstRequest.Equals(ConnectionStatus.success.ToString()) ||
                !secondRequestObject.MessageFirstRequest.Equals(ConnectionStatus.success.ToString()))
            {
                return(null);
            }

            SpaceStationData combinedSpaceStation = SpaceStationDataOperations.CombineSpaceStation(firstRequestObject, secondRequestObject);

            return(combinedSpaceStation);
        }
Esempio n. 5
0
        private static SpaceStationData ConvertDegreesToRadians(SpaceStationData spaceStation)
        {
            SpaceStationData spaceStationInRadians = new SpaceStationData()
            {
                LatitudeFirstRequest   = spaceStation.LatitudeFirstRequest * Math.PI / 180,
                LongitudeFirstRequest  = spaceStation.LongitudeFirstRequest * Math.PI / 180,
                LatitudeSecondRequest  = spaceStation.LatitudeSecondRequest * Math.PI / 180,
                LongitudeSecondRequest = spaceStation.LongitudeSecondRequest * Math.PI / 180
            };

            return(spaceStationInRadians);
        }
Esempio n. 6
0
        private static double HaversineFormula(SpaceStationData spaceStation)
        {
            SpaceStationData radianValues = ConvertDegreesToRadians(spaceStation);

            double twoPointsChordLength =
                Math.Pow(Math.Sin((radianValues.LatitudeSecondRequest - radianValues.LatitudeFirstRequest) / 2), 2) +
                Math.Cos(radianValues.LatitudeFirstRequest) * Math.Cos(radianValues.LatitudeFirstRequest) *
                Math.Pow(Math.Sin((radianValues.LongitudeSecondRequest - radianValues.LongitudeFirstRequest) / 2), 2);

            double angularDistance = 2 * Math.Atan2(Math.Pow(twoPointsChordLength, 0.5), Math.Pow(1 - twoPointsChordLength, 0.5));

            return(angularDistance);
        }
Esempio n. 7
0
        public static SpaceStationData CombineSpaceStation(SpaceStationData firstRequestObject, SpaceStationData secondRequestObject)
        {
            SpaceStationData combinedSpaceStationDatas = new SpaceStationData()
            {
                LatitudeFirstRequest   = firstRequestObject.spaceStationPosition.LatitudeJson,
                LatitudeSecondRequest  = secondRequestObject.spaceStationPosition.LatitudeJson,
                LongitudeFirstRequest  = firstRequestObject.spaceStationPosition.LongitudeJson,
                LongitudeSecondRequest = secondRequestObject.spaceStationPosition.LongitudeJson,
                TimestampFirstRequest  = firstRequestObject.TimestampFirstRequest,
                TimestampSecondRequest = secondRequestObject.TimestampFirstRequest
            };

            return(combinedSpaceStationDatas);
        }
Esempio n. 8
0
        public async Task <SpaceStationData> GetNecessaryData(string url)
        {
            SpaceStationData firstReqDeserializedObject = await DeserializeSpaceStationObject(_client, url);

            await Task.Delay(1001);

            SpaceStationData secondReqDeserializedObject = await DeserializeSpaceStationObject(_client, url);

            SpaceStationData combinedSpaceStation = _unitOfWork
                                                    .CalculationDataRepository
                                                    .GetCombinedSpaceStationData(firstReqDeserializedObject, secondReqDeserializedObject);

            return(combinedSpaceStation);
        }
Esempio n. 9
0
        public async Task <IHttpActionResult> SpaceTravel()
        {
            try
            {
                SpaceStationData SpaceStationDatas = await new SpaceStationHandler().GetNecessaryData("http://api.open-notify.org/iss-now.json");

                if (SpaceStationDatas == null)
                {
                    return(BadRequest("We are sorry, the ISS service from which you are trying get response is not avaiable at the moment!"));
                }

                CalculatedSpaceStation finalData = _unitOfWork.CalculationDataRepository.GetSpeedAndTotalDistance(SpaceStationDatas);


                return(Ok(finalData));
            }
            catch (Exception ex)
            {
                return(InternalServerError(ex));
            }
        }
Esempio n. 10
0
        private async Task <SpaceStationData> DeserializeSpaceStationObject(HttpClient client, string url)
        {
            SpaceStationData deserializedObject = await new GetDeserializedJsonData <SpaceStationData>(_client, url).DeserializedJsonData();

            return(deserializedObject);
        }
Esempio n. 11
0
        public static CalculatedSpaceStation CalculateVelocityAndDistance(double eRadius, SpaceStationData spaceSation)
        {
            double distance = CalculateDistance(spaceSation, eRadius);
            double velocity = CalculateIISSpeedInKmh(spaceSation, distance);

            return(new CalculatedSpaceStation()
            {
                Distance = distance,
                Velocity = velocity
            });
        }
Esempio n. 12
0
        private static double CalculateDistance(SpaceStationData spaceStation, double eRadius)
        {
            double distance = CalculateDistanceFromHaversine(eRadius, spaceStation);

            return(distance);
        }