В сферическом состоянии, учитывая 3 точки и соответствующие расстояния до 4-й точки, как найти свою геолокацию?

Возможный дубликат:
Трилатерация с использованием трех точек широты и долготы и трех расстояний

Это скорее математический вопрос, чем вопрос программирования. В принципе, у меня есть P1: (lat1, lon1), P2: (lat2, lon2), P3: (lat3, lon3) и D1, D2, D3 и 4-я неизвестная точка Px: (latx, lonx); также P1, P2, P3 не лежат на одном и том же пути Великого круга, и D1 - это расстояние между P1 и Px, а D2 - это расстояние между P2 и Px и т. д.

Как узнать координаты Px?

= отредактировано на основе ответа =

Большое спасибо!

PS. Если вы собираетесь указать какой-либо API, я бы хотел, чтобы он был на JavaScript.


person Steve    schedule 16.07.2012    source источник
comment
Насколько далеко будут удалены друг от друга точки, удовлетворит ли ваши потребности плоскостная проекция и 2-мерная триангуляция?   -  person Bergi    schedule 16.07.2012
comment
Известные точки находятся на расстоянии нескольких километров друг от друга, а неизвестные точки могут варьироваться от нескольких сотен метров до нескольких сотен километров.   -  person Steve    schedule 16.07.2012
comment
Я нашел здесь несколько ответов: gis.stackexchange.com/questions/66/   -  person Steve    schedule 17.07.2012
comment
stackoverflow.com/questions/2813615/ отвечает на мои вопросы. Спасибо!   -  person Steve    schedule 17.07.2012


Ответы (1)


Вы должны понимать, что здесь будет несколько точек, удовлетворяющих математическому ограничению. Подумайте ясно: если у вас есть две точки на сфере (пока игнорируйте геодезическую форму), P1 и P2, и у вас есть еще одна точка T1, на расстоянии x от P1 и на расстоянии y от P2, тогда у вас будет еще одна симметричная (зеркальная ) точка T1 ', которая будет удовлетворять тем же условиям расстояния, так сказать, с другой стороны.

Еще хуже: рассмотрим случай шара диаметром D. Ваш P1 находится на Северном полюсе, а ваш P2 - на Южном полюсе. Вы видите, что все точки на экваторе удовлетворяют вашему условию?

Примените это к своему примеру: рассмотрим точку P1 на Северном полюсе. Рассмотрим P2 на Южном полюсе. Рассмотрим расстояние до Px, т.е. D1 = D2 = (2.pie.r) / 4. Видите проблему? Этому удовлетворяют все точки на экваторе, а не одна единственная точка. Фактически, в этом случае, даже если D1! = D2, у вас есть концентрические линии меньшего размера (концентрические к экватору), точки которых удовлетворяют этим ограничениям.

В вашем случае слишком много Px, а не один. Чтобы прийти к особой точке на сферической поверхности, ограничения описания были бы более конкретными.

Наконец, важно установить правильность контекста. Должен ли ваш алгоритм поддерживать все точки, соответствующие критериям? Или ваши критерии должны быть изменены таким образом, чтобы алгоритм всегда оценивал до особой точки. Будь осторожен.

Некоторые ссылки, которые могут вам помочь:

Википедия: http://en.wikipedia.org/wiki/Spherical_coordinates
SO : Нанесение точки на краю сферы

Обновления на основе вашего трехточечного примера:


Опять же, вашим критериям может быть несколько точек. Что, если P1, P2, P3 лежат на одной дуге? См. Схему ниже. Даже с тремя точками нет гарантии, что будет одна четвертая точка, удовлетворяющая критериям расстояния. Даже с n баллами такой гарантии нет.

На математическом языке для набора из n случайных точек и набора расстояний от этих отдельных точек набор результирующих точек, удовлетворяющих критерию расстояния МОЖЕТ содержать более одного элемента.

введите описание изображения здесь

Вас могут обмануть, если вы подумаете: «О, этот парень всегда предполагает, что точки лежат на одной дуге». Вы ведь не делаете особого алгоритма? Ваш алгоритм будет обобщенным решением, не так ли?

Вы должны гарантировать, что точки не находятся на одной дуге (в наборе из n точек, я думаю, по крайней мере, 1 точка не может быть на одной дуге).

Чтобы свести исходные точки к минимуму: вам необходимо установить специальные отношения между точками, потому что тогда, используя ТОЛЬКО две точки, отношение треугольника даст ровно одну точку.

Какой треугольник? Визуализируйте это: у вас есть две точки и третья неизвестная точка. Все упомянутые вами расстояния являются СФЕРИЧЕСКИМИ, то есть расстояниями по криволинейной поверхности. Вы видите, что между этими точками тоже есть ровные расстояния? Можете ли вы представить себе, что через эти точки будет проходить плоскость, разрезающая сферу, верно? Я говорю это, чтобы подчеркнуть, что вам не нужно беспокоиться о кривизне поверхности (отсюда и трехмерные стерадианные углы). Вы можете увидеть нижележащий двумерный треугольник, неизвестная вершина которого также будет третьей точкой на поверхности сферы.

Я знаю, что, возможно, вам будет очень трудно это представить, я попробую нарисовать для этого диаграмму. (Не могу найти хороших онлайн-инструментов!).

И, наконец, это будет значительным подспорьем: пожалуйста, прочтите внимательно.

Взято из Википедии: http://en.wikipedia.org/wiki/Great-circle_distance

Большой круг или ортодромическое расстояние - это кратчайшее расстояние между любыми двумя точками на поверхности сферы, измеренное вдоль пути на поверхности сферы (в отличие от через внутреннюю часть сферы). Поскольку сферическая геометрия отличается от обычной евклидовой геометрии, уравнения расстояния принимают другую форму. Расстояние между двумя точками в евклидовом пространстве - это длина прямой линии от одной точки до другой. На сфере же нет прямых линий. В неевклидовой геометрии прямые линии заменяются геодезическими. Геодезические на сфере - это большие круги (круги на сфере, центры которых совпадают с центром сферы).

Еще несколько обновлений:

Преобразование длинных лат в декартовы координаты можно выполнить с помощью формулы Хаверсина. Погугли это. См. Здесь: Преобразование долготы \ широты в декартовы координаты и здесь: http://en.wikipedia.org/wiki/World_Geodetic_System

person Community    schedule 16.07.2012
comment
Спасибо за ответ, обновил вопрос, чтобы он стал более понятным. Моей целью было указать минимальное количество координат и относительное расстояние до неизвестного местоположения. - person Steve; 16.07.2012
comment
Еще раз спасибо, что указали на плохо описанный вопрос, я снова его обновил. - person Steve; 16.07.2012