destination method
Coordinate
destination({
- required Coordinate startPoint,
- required double bearing,
- required double distance,
This function calculates the destination point and final bearing travelling along a (shortest distance) great circle arc for a given start point, initial bearing and distance
startPoint
Initial coordinates
distance
Distance on great circle
bearing
Bearing
Returns Destination coordinates
final istCoordinates = Coordinate(41.28111111, 28.75333333); // The coordinates of Istanbul Airport
final jfkCoordinates = Coordinate(40.63980103, -73.77890015); // The coordinates of New York JFK Airport
final greatCircle = GreatCircle();
final bearing = greatCircle.bearing(istCoordinates, jfkCoordinates);
final distance = 1000; // km
final destination = greatCircle.destination(istCoordinates, distance, bearing); // The coordinates of point which is at 1000th km great circle between Istanbul Airport and JFK Airport
Implementation
Coordinate destination(
{required Coordinate startPoint,
required double bearing,
required double distance}) {
final double lat1 = startPoint.latitude.toRadians();
final double lon1 = startPoint.longitude.toRadians();
final double sinLat = sin(lat1) * cos(distance / earthRadiusKm) +
cos(lat1) * sin(distance / earthRadiusKm) * cos(bearing.toRadians());
final double lat = asin(sinLat);
final double y =
sin(bearing.toRadians()) * sin(distance / earthRadiusKm) * cos(lat1);
final double x = cos(distance / earthRadiusKm) - sin(lat1) * sin(lat);
final lon = lon1 + atan2(y, x);
return Coordinate(lat.toDegrees(), lon.toDegrees());
}