Я ищу плавный способ вычисления расстояния между двумя точками GPS, поэтому я получаю результат, похожий на: «Вам нужно идти на x метров вверх и y метров влево - так что я могу работать с системой координат 2d, где у меня есть позиция (0,0), а другие позиции показывают расстояние в (x, y) в метрах от моего положения.Вычислить расстояние в (x, y) между двумя GPS-точками
Моя идея состояла в том, чтобы вычислить расстояние между точками, используя формулу гаверсинуса. (Это возвращает мою гипотенузу)
в дополнении к этому, я вычисляя отношение между этими двумя точками. Это мой альфа.
С этими двумя значениями я хотел использовать основные функции тригонометрии для решения моей проблемы.
Итак, я попытался вычислить: catheti_1 = sin(alpha) * hypotenuse, catheti_2 = cos(alpha) * hypotenuse
.
Возможно, я делаю что-то не так, но мои результаты бесполезны на данный момент.
Итак, мой вопрос: как рассчитать расстояние в направлениях x и y между двумя точками GPS?
Я расчет альфа в следующем порядке:
public static double bearingTo(GPSBean point1, GPSBean point2) {
double lat1 = Math.toRadians(point1.latitude);
double lat2 = Math.toRadians(point2.latitude);
double lon1 = Math.toRadians(point1.longitude);
double lon2 = Math.toRadians(point2.longitude);
double deltaLong = lon2 - lon1;
double y = Math.sin(deltaLong) * Math.cos(lat2);
double x = Math.cos(lat1) * Math.sin(lat2) - Math.sin(lat1)
* Math.cos(lat2) * Math.cos(deltaLong);
double bearing = Math.atan2(y, x);
return (Math.toDegrees(bearing) + 360) % 360;
}
как вы рассчитываете 'alpha'? – Barranka
Я добавил метод для alpha;) – Frame91
@Borian No. Это не дубликат, потому что мне не нужно прямое расстояние между этими двумя точками. Я знаю о формуле harversine, но мне нужно «ходить» в геометрии таксиса;) – Frame91