C # - Найти координаты, чтобы продлить линию на определенное количество километров - PullRequest
1 голос
/ 03 мая 2011

Мне нужно вычислить координаты точки, которая расширяет существующую линию на определенное количество километров.

Данные ввода: (1) начальная и конечная координаты существующей линии (в градусах). (2) длина (км) того, как далеко новая линия должна простираться после указанной выше «конечной» координаты.

Выход: Широта и долгота (в градусах) точки, которая расширяет линию

В настоящее время у меня есть метод, который вычисляет направление между двумя наборами координат, если это помогает. У меня также есть метод, который находит точку на линии, но это точка между двумя наборами заданных координат, не расширяющая существующую линию. Кажется, я не могу понять, как изменить это для своих нужд.

Кроме того, я использую WGS-84, поэтому (насколько я понимаю) искривление земли не нужно принимать во внимание.

Буду признателен за любую помощь, спасибо!

Редактировать:

Ну, проблема, которую я видел, заключалась в том, что расстояние было в километрах, а координаты были градусами GPS. Но я только что использовал векторы, чтобы решить эту проблему:

C = B - k ( A - B ), где k = доля расстояния до места C

Примечание: в моем случае k = 1,5, потому что я хотел, чтобы новая точка была на половине расстояния вне исходной линии. Я думаю, что 0 будет в точке A, а 1 - в точке B.

Я подготовил его в Google Планета Земля, и, похоже, он работает.

Ответы [ 2 ]

1 голос
/ 04 мая 2011

Вы хотите посмотреть в уравнение прямой линии. С помощью величины и начальной точки вы можете легко рассчитать конечную точку для заданной длины.

Y = mx + b

Вот краткое руководство:

http://www.mathsisfun.com/equation_of_line.html

Вы также можете поискать коллинеарные точки в Google, что на самом деле то, что вы ищете.

0 голосов
/ 06 мая 2011

Кривизна Земли должна быть принята во внимание. Вам также необходимо решить, работаете ли вы с большими кругами (наименьшее расстояние) или с прямыми линиями. Если это первое, то вам нужно рассчитать концевой подшипник, а затем вытянуть его из этого подшипника. Следующая ссылка содержит формулы, которые вам нужны.

http://www.movable -type.co.uk / скрипты / latlong.html

...