Угол между 2 координатами GPS


Я работаю в другом приложении для iPhone, которое использует AR, и я создаю свой собственный фреймворк, но у меня возникли проблемы с получением угла второй координаты относительно текущего положения устройства, кто-нибудь знает хороший ресурс, который мог бы помочь мне в этом?

Заранее спасибо!

2 5

2 ответа:

Если две точки находятся достаточно близко друг к другу и далеко от полюсов, можно использовать простую тригонометрию:

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;
    }