Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public class Convert {
- public double calc(double currentLat, double currentLng, double goalLat, double goalLng) {
- // Earth radius
- double R = 6371000;
- double radCurrentLat = Math.toRadians(currentLat);
- double radGoalLat = Math.toRadians(goalLat);
- double diffLat = Math.toRadians(goalLat - currentLat);
- double diffLng = Math.toRadians(goalLng - currentLng);
- // Haversine formula
- double a = Math.sin(diffLat / 2) * Math.sin(diffLat / 2) +
- Math.cos(radCurrentLat) * Math.cos(radGoalLat) *
- Math.sin(diffLng / 2) * Math.sin(diffLng / 2);
- double c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
- // Distance given in meters
- return R * c;
- }
- public static void main(String[] args) {
- Convert c = new Convert();
- double distance = c.calc(4100.0, -74.0, 40.0, -74.006);
- // If number is to big, c.calc(4100.0, -74.0, 40.0, -74.006)
- // will return 1.111949264364013E7 that will be 11.120 km
- System.out.println(distance);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement