This class stores information about a location on Earth. Locations are specified using latitude and longitude. The class includes a method for computing the distance between two locations in kilometers.
`* This implementation is based off of the example from Stuart Reges at the University of Washington.
public class GeoLocation
{
// Earth radius in miles
public static final double RADIUS = 3963.1676;
// Number of kilomteres in one mile
public static final double KM_PER_MILE = 1.60934;
private double latitude;
private double longitude;
/**
* Constructs a geo location object with given latitude and longitude
*/
public GeoLocation(double theLatitude, double theLongitude)
{
latitude = theLatitude;
longitude = theLongitude;
}
/**
* Returns the latitude of this geo location
*/
public double getLatitude()
{
return latitude;
}
/**
* returns the longitude of this geo location
*/
public double getLongitude()
{
return longitude;
}
// returns a string representation of this geo location
public String toString()
{
return "latitude: " + latitude + ", longitude: " + longitude;
}
public double distanceFromInKilometers(GeoLocation other)
{
double lat1 = Math.toRadians(latitude);
double long1 = Math.toRadians(longitude);
double lat2 = Math.toRadians(other.latitude);
double long2 = Math.toRadians(other.longitude);
// apply the spherical law of cosines with a triangle composed of the
// two locations and the north pole
double theCos = Math.sin(lat1) * Math.sin(lat2) +
Math.cos(lat1) * Math.cos(lat2) * Math.cos(long1 - long2);
double arcLength = Math.acos(theCos);
return KM_PER_MILE * arcLength * RADIUS;
}'
So I have this code that is meant to convert to kilometers and: San Francisco to New York City converts currently to 4133.143717886466 which is correct, however International Flight's conversion is 5576.443040444087 when it should be 5576.443040444088, any specific reason this number is off by 1 when the other one works?