package com.knowledgebooks.rdf.implementation;
/**
* Created by IntelliJ IDEA.
* User: markw
* Date: Jan 23, 2010
* Time: 1:00:50 PM
* To change this template use File | Settings | File Templates.
*/
public class Haversine {
public static float distance(float lat1_deg, float lon1_deg, float lat2_deg, float lon2_deg) {
double earthRadius = 6371; // in kilometers
double lat1 = Math.toRadians(lat1_deg);
double lon1 = Math.toRadians(lon1_deg);
double lat2 = Math.toRadians(lat2_deg);
double lon2 = Math.toRadians(lon2_deg);
double dlon = (lon2 - lon1);
double dlat = (lat2 - lat1);
double a = (Math.sin(dlat / 2)) * (Math.sin(dlat / 2))
+ (Math.cos(lat1) * Math.cos(lat2) * (Math.sin(dlon / 2)))
* (Math.cos(lat1) * Math.cos(lat2) * (Math.sin(dlon / 2)));
double c = 2 * Math.asin(Math.min(1.0, Math.sqrt(a)));
double km = earthRadius * c;
return (float) km;
}
}