我正在另一個使用AR的iPhone應用程序中工作,並且我正在創建自己的框架,但我無法獲得第二個座標相對於當前設備位置的角度,任何人都知道一個很好的資源,可以幫助我呢?2個GPS座標之間的角度
在此先感謝!
我正在另一個使用AR的iPhone應用程序中工作,並且我正在創建自己的框架,但我無法獲得第二個座標相對於當前設備位置的角度,任何人都知道一個很好的資源,可以幫助我呢?2個GPS座標之間的角度
在此先感謝!
如果這兩點都足夠接近,並從兩極好了,你可以使用一些簡單的三角函數:
float dy = lat2 - lat1;
float dx = cosf(M_PI/180*lat1)*(long2 - long1);
float angle = atan2f(dy, dx);
編輯:我忘了提,latN
和longN
- 因此dx
和dy
- 只要不混合單位,可以是度數或弧度。然而,angle
將始終以弧度迴歸。當然,如果你乘以180/M_PI,你可以恢復到度數。
下面是這段代碼的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;
}
有些東西似乎有點過。 dy是度數。它看起來像你試圖將dx轉換爲弧度。但爲什麼lat1轉換爲弧度然後乘以delta經度?但除此之外,atan2()應該像你說的那樣適用於近點。 – 2010-09-28 02:36:51
@Alex:dx和dy都是度數。但是dx必須用緯度的餘弦來縮放,cosf需要弧度。 – 2010-09-29 13:04:38
@MarceloCantos希望你還在身邊。我意識到這是舊的。無論如何,請定義'相距夠近'。 – Aeluned 2013-03-13 00:54:22