вектор направления между двумя геолокациями

Я создаю AR-приложение для Android (да, еще одно), но меня больше интересует понимание математики, стоящей за ним, чем использование фреймворков (знание это и это).

Учитывая местоположения (lat1, long1) и (lat2, long2), я ищу вектор направления (x, y, z) от Location1 до Location2.

Используя этот сайт, я могу рассчитать расстояние и (начальный) азимут между Location1 и Location2.

Сейчас я разрабатываю два подхода (пренебрегая высотой)

x = distHaversine(lat1,long1,lat1,long2);
z = distHaversine(lat1,long1,lat2,long1);
if (lat1 < lat2)
  z *= -1;
if (long1 > long2)
  x *= -1;

а также

distance = distHaversine(lat1,long1,lat2,long2);
angle = 90.0-bearing(lat1,long1,lat2,long2);
x = cos(angle)*distance;
z = sin(angle)*distance;

но теперь я застрял и раздражен ... не должен ли результат быть таким же? Где я нахожу свою ошибку в рассуждениях? Как мне вычислить вектор направления (или, скорее: почему мой второй подход не сработал?)?

Спасибо за вашу помощь


person Hackbard_C    schedule 10.12.2012    source источник