public Dictionary <string, FlightData> Calculate(Dictionary <String, FlightData> flightData, List <TrackData> trackData) { foreach (TrackData track in trackData) { if (flightData.TryGetValue(track.Tag, out FlightData flight)) { flight.Velocity = _velocityCalculator.CalculateSpeed(flight.CurrentTrackData, track); flight.CompassCourse = _directionCalculator.CalculateDirection(flight.CurrentTrackData, track); flight.CurrentTrackData = track; } else { flightData.Add(track.Tag, new FlightData(track)); } } Dictionary <string, FlightData> newFlightData = new Dictionary <string, FlightData>(); foreach (KeyValuePair <string, FlightData> entry in flightData) { if (trackData.Contains(entry.Value.CurrentTrackData)) { newFlightData.Add(entry.Key, entry.Value); } } return(newFlightData); }
public void DirectionCalculatorNoMovementNoTimeReturns0Test() { TrackData prev = new TrackData(dummyTag, dummyX, dummyY, dummyAltitude, dummyTimestamp); TrackData curr = new TrackData(dummyTag, dummyX, dummyY, dummyAltitude, dummyTimestamp); Assert.AreEqual(0, uut.CalculateDirection(prev, curr)); }
public void Setup() { _fakeVelocityCalculator = Substitute.For <IVelocityCalculator>(); _fakeDirectionCalculator = Substitute.For <IDirectionCalculator>(); _fakeCollisionDetector = Substitute.For <ICollisionDetector>(); _fakeVelocityCalculator.CalculateSpeed(Arg.Any <TrackData>(), Arg.Any <TrackData>()).Returns(1000); _fakeDirectionCalculator.CalculateDirection(Arg.Any <TrackData>(), Arg.Any <TrackData>()).Returns(45); uut = new FlightCalculator(_fakeVelocityCalculator, _fakeDirectionCalculator); }
private LocationUpdateResponseNearbyPlayerDTO CreateNearbyPlayerDTO(Location me, Location other) { var latDistance = me.lat - other.lat; var lonDistance = me.lon - other.lon; var totalDistance = Math.Sqrt(Math.Pow(latDistance, 2) + Math.Pow(lonDistance, 2)); return(new LocationUpdateResponseNearbyPlayerDTO() { dist = (float)totalDistance, dir = (int)dir.CalculateDirection(me, other), vel_nearing = 3 }); }