2014-09-25 101 views
0

我想從經度和緯度位置以及距離和方位計算出一個點,但是我混淆了我的數學,可能弄亂了單位。有沒有人可以幫忙?這是我的代碼:從經緯度計算出一個點的距離

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。任何指針都表示讚賞!

[編輯]: 我添加了轉換,但仍然得到非常奇怪的結果

+2

在使用trig函數之前,將所有角度從度數轉換爲弧度。 – duffymo 2014-09-25 11:11:29

回答

0

乍一看您的公式看起來是正確的。

Java的三角函數在弧度,而不是你所假設的程度。

將度數轉換爲弧度,乘以Pi/180

+0

我加了這個:double lat1 = lat1Deg * Math.PI/180; double lng1 = lng1Deg * Math.PI/180; double brng = brngDeg * Math.PI/180;這應該做到這一點不應該嗎? – 2014-09-25 15:35:12

相關問題