public void AddNewTrack(Track.Track add) { Tracks newTrack = new Tracks(); newTrack.New = add; tracks.Add(newTrack); }
//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); }
//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 } }
//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)); }
//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); } }
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); }
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); }
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)))); }