Учитывая линию на поверхности земли, как я могу построить линию, перпендикулярную ей?
Извиняюсь, если это очень простой вопрос. Я думал, что это будет простая задача, но она оказывается нелогичной.
Я начинаю с синей линии на рисунке ниже (см. Ссылку - я пока не могу загрузить цифры). Я нашел перпендикулярную линию, рассчитав градиент синей линии (м), а затем построив еще одну линию (зеленую) с градиентом -1 / м. Когда я строю линии в Matlab (используя 'plot' и 'axis равна'), они выглядят перпендикулярно, как и ожидалось.
Однако когда я экспортирую эти строки в Google Планета Земля (используя KML Toolbox), они больше не выглядят перпендикулярно (см. Ссылку ниже; более короткая линия - синяя линия с предыдущего рисунка).
Я понимаю, что странные вещи случаются на изогнутых поверхностях, но я думал, что линии должны, по крайней мере, выглядеть перпендикулярно локально. Я подозреваю, что это как-то связано с проекцией в Google Earth - в частности, тот факт, что ячейки сетки имеют примерно одинаковую длину сторон, но продольный край имеет длину = 1 градус, тогда как широтный край имеет длину = 0,5 степень.
Итак, в итоге:
- мой метод нахождения перпендикулярной линии действителен на изогнутой поверхности? (т.е. построение линии с градиентом -1 / м)
- на изображении Google Планета Земля перпендикулярные линии выглядят так, как ожидалось, или происходит что-то странное?
ОБНОВИТЬ:
Чтобы обеспечить больше контекста: я смотрю на радиолокационные данные, взятые с самолета. Разноцветная область - это «полоса», где были записаны наблюдения. Синяя линия, с которой я начал в объяснении выше, параллельна полосе: это линия полета самолета (самолет двигался примерно в юго-западном направлении). Радар смотрит в направлении, перпендикулярном линии полета, слева. Я пытаюсь нарисовать линию, перпендикулярную линии полета; это должно быть направление, в котором смотрит радар, и должно аккуратно разрезать валок. Как видите, это не так.
Ответы:
Изящный принцип дает простой ответ:
Это означает, что после аффинного изменения координат (обычно включающего только изменение масштаба одной из них) мы можем использовать формулы евклидовой геометрии, такие как теорема Пифагора для вычисления расстояний и формула отрицательного обратного наклона для нахождения перпендикуляров.
С координатами широты и долготы на сфере (вдали от полюсов, где долгота становится единичной), все, что нам нужно сделать, это изменить масштаб направления восток-запад, чтобы отразить уменьшающуюся длину градуса долготы при приближении к полюсам. В сферической модели Земли это сжатие определяется косинусом широты. Это просто изменение соотношения сторон сюжета, не более того.
Это работает для регионов, которые простираются не более чем на несколько градусов широты с севера на юг и не приближаются ни к одному полюсу.
Поэтому все, что вам нужно сделать, это:
Умножьте все долготы на косинус типичной широты.
Вычислить перпендикулярную линию.
Отмените настройку координат.
Например, предположим, что траектория самолета взяла его от (lon, lat) = (-78, 40) до (-79, 41). Мы можем взять типичную широту, лежащую между 40 и 41, например 40,5.
Шаг 1 Скорректированные координаты (-78 * cos (40,5), 40) = (-59,31167, 40) и (-79 * cos (40,5), 41) = (-60,07207, 41).
Шаг 2 Вопрос предлагает сделать это, используя метод отрицательного обратного наклона. Это было бы правильно, но в некоторых случаях это не удастся (когда наклон бесконечен). Это более общее и более мощное использование векторной арифметики. Вот как идет расчет.
Вектор направления для траектории полета - это смещение от его начала до конца,
Поворот любого вектора (x, y) под прямым углом по часовой стрелке дает (y, -x), откуда перпендикулярное направление вправо
Согласно теореме Пифагора, длина этого вектора является корнем квадратным из суммы квадратов его коэффициентов,
Давайте сместимся, скажем, на 0,2 градуса по этому вектору от начальной точки полета самолета. Начало в (-59,31167, 40) и смещение 0,2 / | w | времена w, заканчивающиеся в
Шаг 3 Чтобы отменить корректировку, разделите первые координаты любых результирующих точек на тот же косинус, который использовался на шаге 1:
Если вы нанесете эти точки, используя соотношение сторон 1: 1, угол будет казаться тупым, а не прямым углом. Но если вы измените соотношение сторон на 1: cos (40,5) (около 4: 3), угол будет правильно составлять 90 градусов. При построении точек с использованием любой конформной проекции, в том числе Google Mercator, угол также будет правильным.
источник