Расчет погрешности подшипника

Это формула, которую я использую:

 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 градусов. Кто-нибудь может понять, почему это так отличается?

1 ответ

В atan2 вы обменяли x и y. Правильный порядок у, х:

Исправить на

double bearingRad = atan2(y, x);

Смотрите также:

#include <math.h>
double atan2( double y, double x );
Другие вопросы по тегам