我正在另一个使用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