public void RadianToDegreeTest_Succes() { //Arrange double expected = 34.3774677078; //Act double actual = LatLonSpherical.RadianToDegree(0.60); double tolerance = calculateTolerance(expected); //Assert Assert.That(actual, Is.EqualTo(expected).Within(tolerance)); }
public void DegreeToRadianTest_Success() { // Arrange double expected = 0.78539816339; // Act double actual = LatLonSpherical.DegreeToRadian(45.0); double tolerance = calculateTolerance(expected); // Assert Assert.That(actual, Is.EqualTo(expected).Within(tolerance)); }
public void CalculateDistanceBetweenLocations() { //Arrange double expected = 124.8; Location startLocation = new Location { latitude = 53.188333, longitude = 0.133333 }; Location endLocation = new Location { latitude = 53.320556, longitude = -1.729722 }; //Act double actual = LatLonSpherical.CalculateDistanceBetweenLocations(startLocation, endLocation); //Assert Assert.That(actual, Is.EqualTo(expected).Within(0.05)); }
public void CalculateBearing() { //Arrange double expected = 284.00119698271232; Location startLocation = new Location { latitude = 59.571111, longitude = 4.133889 }; Location endLocation = new Location { latitude = 42.351111, longitude = -71.040833 }; //Act double actual = LatLonSpherical.CalculateBearing(startLocation, endLocation); //Assert Assert.That(actual, Is.EqualTo(expected)); }
public void CalculateDestinationLocation() { //Arrange Location expected = new Location { latitude = 53.188333, longitude = 0.133333 }; Location point = new Location { latitude = 53.320556, longitude = -1.729722 }; double bearing = 96.018254433006632; double distance = 124.8; //Act Location actual = LatLonSpherical.CalculateDestinationLocation(point, bearing, distance); //Assert Assert.That(actual, Has.Property("latitude").EqualTo(expected.latitude).Within(0.0005) & Has.Property("longitude").EqualTo(expected.longitude).Within(0.0005)); }
private async Task MoveTo(Location startPoint, Location endPoint, CancellationToken cancellationToken) { var startLocation = startPoint; var endLocation = endPoint; var distanceBetweenPoints = LatLonSpherical.CalculateDistanceBetweenLocations(startLocation, endLocation) * 1000; // multiply by 1000 to get in meters var timeRequired = distanceBetweenPoints / _drone.Velocity; for (int i = 0; i < timeRequired; i++) { if (cancellationToken.IsCancellationRequested) { cancellationToken.ThrowIfCancellationRequested(); } var bearing = LatLonSpherical.CalculateBearing(startLocation, endLocation); var distanceInKm = _drone.Velocity / 1000; var intermediaryLocation = LatLonSpherical.CalculateDestinationLocation(startLocation, bearing, distanceInKm); var coordinates = new Coordinates { latitude = intermediaryLocation.latitude, longitude = intermediaryLocation.longitude }; var track = new Track { location = coordinates, timestamp = DateTime.UtcNow.ToString("yyyy-MM-ddTHH:mm:ssZ") }; var response = await this._utmService.Tracking.FlightTrack(_drone.Id, _drone.OperationId, track); if (response) { _drone.Location = intermediaryLocation; Console.WriteLine($"operation: {_drone.OperationId} drone: {_drone.Id} latitude: {track.location.latitude} longitude: {track.location.longitude}"); } else { Console.WriteLine("Error"); } startLocation = intermediaryLocation; } }