Example #1
0
        public void AddNewTrack(Track.Track add)
        {
            Tracks newTrack = new Tracks();

            newTrack.New = add;
            tracks.Add(newTrack);
        }
Example #2
0
        //Region Punkt 7 - current velocity

        public static double GetCurrentVelocity(Track.Track track1, Track.Track track2)
        {
            double time = (track2.Timer - track1.Timer).Seconds;


            return(GetDistance(track1, track2) / time);
        }
Example #3
0
 //Punkt 12 - separation condition
 public static bool AreTracksColliding(Track.Track track1, Track.Track track2)
 {
     if (GetDistance(track1, track2) < 5000 &&
         GetAltitudeDistance(track1.Altitude, track2.Altitude) < 300)
     {
         return(true); //conflicting
     }
     else
     {
         return(false); // not conflicting
     }
 }
Example #4
0
        //Punkt 7 - current course

        public static double GetCurrentCourse(Track.Track track1, Track.Track track2)
        {
            var theta = Math.Atan2((track2.XCoordinate - track1.XCoordinate), (track2.YCoordinate - track1.YCoordinate));

            var angle = ((theta * 180 / Math.PI) + 360 % 360);

            if (angle < 0)
            {
                angle = 360 + angle;
            }

            return(Math.Round(angle, 1));
        }
Example #5
0
        //Punkt 1&5 - Bruges til at validere om tracks er indenfor airspace

        public static bool TrackIsInsideAirSpace(Track.Track track)
        {
            if ((track.XCoordinate >= 10000 && track.XCoordinate <= 90000) &&
                (track.YCoordinate >= 10000 && track.YCoordinate <= 90000) &&
                (track.Altitude >= 500 && track.Altitude <= 20000))
            {
                return(true);
            }
            else
            {
                return(false);
            }
        }
Example #6
0
        private void UpdateTrack(Track.Track upTrack)
        {
            int trackIndex = tracks.FindIndex(t => t.New == upTrack);

            tracks[trackIndex].Old = tracks[trackIndex].New;

            tracks[trackIndex].New = upTrack;

            //calculating new course and velocity
            Track.Track track1 = tracks[trackIndex].Old;
            Track.Track track2 = tracks[trackIndex].New;

            tracks[trackIndex].New.CompassCourse = Calculator.Calculator.GetCurrentCourse(track1, track2);

            tracks[trackIndex].New.HorizontalVelocity = Calculator.Calculator.GetCurrentVelocity(track1, track2);
        }
Example #7
0
        public Track.Track CreateTrack(string trackInfo)
        {
            Track.Track track = new Track.Track();

            string[] trackInfoSplit = trackInfo.Split(';');

            track.Tag         = trackInfoSplit[0];
            track.XCoordinate = Convert.ToInt32(trackInfoSplit[1]);
            track.YCoordinate = Convert.ToInt32(trackInfoSplit[2]);
            track.Altitude    = Convert.ToInt32(trackInfoSplit[3]);

            string DateFormat = "yyyyMMddHHmmssfff";

            track.Timer = DateTime.ParseExact(trackInfoSplit[4], DateFormat, CultureInfo.InvariantCulture);

            //Console.WriteLine(track.Timer);

            return(track);
        }
Example #8
0
        public static double GetDistance(Track.Track track1, Track.Track track2)
        {
            // for some reason our application runs and then arrives to this point (to be specific - Track.Track track2 returns a null pointer and crashes the application)

            return(Math.Sqrt((Math.Pow((track2.XCoordinate - track1.XCoordinate), 2) + Math.Pow(track2.YCoordinate - track1.YCoordinate, 2))));
        }