static void Main(string[] args)
        {
            Console.WriteLine((Math.Sin(MeasureConverter.ConvertDegreeToRadian(210))));
            Console.WriteLine(MeasureConverter.ConvertRadiansToDegrees(Math.Asin(-0.5)));
            AircraftIdData testData = new AircraftIdData();
            //AirTrafficController testController = new AirTrafficController(TrafficControllerType.Approach);
            var         testPilot         = new Person("ivan");
            Airport     testDeparturePort = new Airport("testAirport", new Position3D(0, 0, 1), new Person("disp"));
            Airport     testArrivalPort   = new Airport("testAirport2", new Position3D(10, 10, 1), new Person("disp"));
            Airport     newAirport        = new Airport("John F. Kennedy International Airport", new Position3D(-90.9187999m, 46.5482781m, 251), new Person("John Kennedy"));
            FlightRoute testRoute         = new FlightRoute();

            testRoute.AddFix(new AirspaceFix(new Position3D(2, 2, 2), false, false));
            FlightPlan testPlan     = new FlightPlan(testDeparturePort, testArrivalPort, new DateTime(), new DateTime(), 10000, testRoute, 100, FlightType.Cargo);
            Aircraft   testAircraft = new Aircraft(testData, 45);
            var        flight       = new Flight(testAircraft, testPilot, testPlan, "7382");

            Console.WriteLine(flight.CurrentPosition);

            while (true)
            {
                flight.UpdatePosition();
                Console.WriteLine(flight.CurrentPosition);
                System.Threading.Thread.Sleep(3000);
            }
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Method responsible for updating the position of aircraft at a certain time.
        /// </summary>
        public void UpdatePosition()
        {
            this.CurrentHeadingInDegrees = CalculateCurrentHeading(FlightPlan.PreplannedRoute.GetNextFix().Coordinates);
            double   currentHeadingInRadians = MeasureConverter.ConvertDegreeToRadian(CurrentHeadingInDegrees);
            decimal  newLongitude            = CurrentPosition.Longitude;
            decimal  newLatitude             = CurrentPosition.Latitude;
            DateTime currentDateTime         = DateTime.Now;
            double   secondsElapsed          = (currentDateTime - lastUpdated).Seconds;
            double   distanceElapsed         = secondsElapsed * CurrentSpeed / 3600; // to convert NM/h to NM/s

            newLongitude        += (decimal)(distanceElapsed * Math.Sin(currentHeadingInRadians));
            newLatitude         += (decimal)(distanceElapsed * Math.Cos(currentHeadingInRadians));
            this.CurrentPosition = new Position3D(newLongitude, newLatitude, CurrentPosition.Altitude);
            lastUpdated          = currentDateTime;
        }