2010-09-28 332 views
4

我正在另一個使用AR的iPhone應用程序中工作,並且我正在創建自己的框架,但我無法獲得第二個座標相對於當前設備位置的角度,任何人都知道一個很好的資源,可以幫助我呢?2個GPS座標之間的角度

在此先感謝!

回答

13

如果這兩點都足夠接近,並從兩極好了,你可以使用一些簡單的三角函數:

float dy = lat2 - lat1; 
float dx = cosf(M_PI/180*lat1)*(long2 - long1); 
float angle = atan2f(dy, dx); 

編輯:我忘了提,latNlongN - 因此dxdy - 只要不混合單位,可以是度數或弧度。然而,angle將始終以弧度迴歸。當然,如果你乘以180/M_PI,你可以恢復到度數。

+0

有些東西似乎有點過。 dy是度數。它看起來像你試圖將dx轉換爲弧度。但爲什麼lat1轉換爲弧度然後乘以delta經度?但除此之外,atan2()應該像你說的那樣適用於近點。 – 2010-09-28 02:36:51

+0

@Alex:dx和dy都是度數。但是dx必須用緯度的餘弦來縮放,cosf需要弧度。 – 2010-09-29 13:04:38

+0

@MarceloCantos希望你還在身邊。我意識到這是舊的。無論如何,請定義'相距夠近'。 – Aeluned 2013-03-13 00:54:22

1

下面是這段代碼的Android版本

import com.google.android.maps.GeoPoint; 
    public double calculateAngle(GeoPoint startPoint, GeoPoint endPoint) { 
     double lat1 = startPoint.getLatitudeE6()/1E6; 
     double lat2 = endPoint.getLatitudeE6()/1E6; 
     double long2 = startPoint.getLongitudeE6()/1E6; 
     double long1 = endPoint.getLongitudeE6()/1E6; 
     double dy = lat2 - lat1; 
     double dx = Math.cos(Math.PI/180 * lat1) * (long2 - long1); 
     double angle = Math.atan2(dy, dx); 
     return angle; 
    }