计算轴承误差



这是我使用的公式:

 double lat1 = [self getRadiansFromDegress:self.LocationLatitude];
    double lat2 = [self getRadiansFromDegress:PointOfInterest.latitude];
    double x = sin(lonDiff) * cos(lat2);
    double y = cos(lat1)*sin(lat2) - sin(lat1)*cos(lat2)*cos(longDiff);
    double bearingRad = atan2(x,y);
    double bearingDeg = [self getDegreesFromRadians:bearingRad];
    NSLog(@"Bearing: %f", bearingDeg);

对于lat1=30.61

lat2=30.620954

lon1=-96.342

lon2=-96.345238

longDiff=-0.003238

根据本网站:http://www.yourhomenow.com/house/haversine.html我应该得到大约345度,但我的代码返回-86.028010度。有人明白为什么这是如此不同吗?

在atan2中,您交换了x和y。正确的顺序是y,x:

更正为

double bearingRad = atan2(y, x);

另请参阅:

#include <math.h>
double atan2( double y, double x );

相关内容

  • 没有找到相关文章

最新更新