我想從經度和緯度位置以及距離和方位計算出一個點,但是我混淆了我的數學,可能弄亂了單位。有沒有人可以幫忙?這是我的代碼:從經緯度計算出一個點的距離
public static double[] distFromPointWithDistance(float lat1Deg, float lng1Deg, float d, float brngDeg) {
double lat1 = Math.toRadians(lat1Deg);
double lng1 = Math.toRadians(lng1Deg);
double brng = Math.toRadians(brngDeg);
double R = 6371; //kilometers
double lat2 = Math.asin(Math.sin(lat1)*Math.cos(d/R) +
Math.cos(lat1)*Math.sin(d/R)*Math.cos(brng));
double lng2 = lng1 + Math.atan2(Math.sin(brng)*Math.sin(d/R)*Math.cos(lat1),
Math.cos(d/R)-Math.sin(lat1)*Math.sin(lat2));
double[] result = new double[2];
result[0] = lat2;
result[1] = lng2;
return result;
}
對於lat1Deg:41.884344 對於lng1Deg:12.479627 對於DIST:1 對於brngDeg:90
我所期待的是41°53'04「N,012 °29'30「E,但我得到了完全不同的東西,lat2 = 0.73101。任何指針都表示讚賞!
[編輯]: 我添加了轉換,但仍然得到非常奇怪的結果
在使用trig函數之前,將所有角度從度數轉換爲弧度。 – duffymo 2014-09-25 11:11:29