Для цели определения расстояния и направления от одной точки (начала отсчета) до других точек (точки заданы координатами на сфере и радиусом Земли) я использую формулы - они приведены в приложенном файле. Если к формуле расчета длины вектора (она честно утащена отсюда) у меня нет претензий, то формулу учета направления (север - юг - запад - восток ИЛИ циферблат часов) я придумывал сам. И мне кажется, что ее можно значительно упростить - нет ли у Вас плодотворных идей на эту тему?
Владимир, Благодарю за ссылку. Тем не менее, я не нашел там ответа на интересующий меня вопрос (для Excel'я там приведен пример вычисления дистанции между двумя точками, к которому у меня нет вопросов...): Можно ли упростить формулу <достаточно грубого> определения направления вектора, заданного координатами начала и конца.
Сама задача мной решена - но, мне не нравится примененная формула: - определение угла поворота вектора (его тангенс равен отношению разниц соответствующих координат начала и конца вектора), - округление до наперед заданных значений - и выбор "названия направления" из таблицы значений
Ну меня для начала настораживает отсутствие в формуле для дистанции числа 6366.2. Есть подозрение, что она сильно неточная. Причём если перейти к полярным координатам, то и формула упростится
Для моих целей точность достаточна (с точностью до 1 км вычисления совпадают с результатами Google'а и Яндекса...) - в формуле используется число 6371 км... Можно ли где-то увидеть результат упрощения? Нет ли мыслей по упрощению формул(ы) для вычисления направления? =====================UPDATE=================== Прошу прощения - я не сразу понял суть Ваших опасений: математика в формуле определения направления действительно сильно упрощена (до проекции на плоскость, касающуюся сферы в точке начала координат) - но даже в правильной математике (см. ссылку ниже в сообщении #9) для определения азимута радиус Земли не требуется.
Ещё бы понять, что вы подразумеваете под направлением. Даны две точки, широта 0, у одной долгота 1, у другой -1. Какое направление имеет вектор от первой точки ко второй?
Андрей, очевидно, что вторая (-1) точка находится западнее первой (1), поэтому, принимая первую точку в качестве начала отсчета формула должна вернуть (и возвращает!) литеру "З" = "запад" или "IX часов". Однако, в моем случае ситуация упрощается отсутствием отрицательных координат (все точки лежат в северном и восточном полушариях)
Сразу отмечу, что не являюсь специалистом по сферической тригонометрии. В любом случае, речь идет о понятиях, которыми картографы пользуются сотни лет (а астрономы - тысячи), так что изобретать свои формулы точно не стоит. Можно посмотреть еще здесь (про начальный азимут).
Off. Здравствуйте, Михаил! Был, только звали его Эйлер (кстати, написал основополагающий учебник по сферической тригонометрии).
Цитата
однажды два студента, выполняя независимо сложные астрономические вычисления, получили немного различающиеся результаты в 50-м знаке и обратились к Эйлеру за помощью. Эйлер проделал те же вычисления в уме и указал правильный результат
А мы на форуме с 16-м знаком никак разобраться не можем
Жалко, что у Вас не появилось конструктивных предложений по упрощению формулы для выбора одного из восьми румбов (или одного из двенадцати часов) в зависимости от двух числовых переменных...
IKor, у Вас две задачи. Найти азимут исходя из двух точек и выбор обозначения направления. По первой Вам предложили поискать формулы, а для второй задавать вопрос можно иначе. Есть вычесленная величина и надо сопоставить с ней .... величина меняется от и до и соответствует ....
Михаил, по всей видимости Вы правы: я мог бы сформулировать задачу по-другому. Но мне казалось, что раз я показал свое решение задачи поиска направления (азимута) и попросил поделиться идеями по его оптимизации, то у вас не возникнет вопросов по имеющимися исходными данными (четыре координаты двух точек) и желаемым результатом (направление-азимут от одной точки до другой).
В отношении математики: безусловно, на сайте по ссылке Сокола приведены более точные вычисления азимута (обобщенные на всю поверхность сферы) - прошу принять мою благодарность. Однако, очевидно, эта информация помогает не упростить мою формулу, но сделать вычисления точнее. В принципе меня устраивает точность вычисления азимута по сильно упрощенной формуле (я рассматриваю широту и долготу точек в качестве ортогональных координат на плоскости) - зато хочется использовать другие возможности MS Excel вместо выбора результата из плоской таблицы с тремя колонками...
Отличие в двух приводненных мной вариантах представления направления (азимута) заключается лишь в количестве строк в таблице (8 румбов против 12 часов) и месте хранения информации ({виртуальная таблица} или дополнительные ячейки)...
И если у кого-нибудь возникнут другие идеи по выбору результата вычислений, то я буду рад попробовать их применить к своей задаче.
Да: Вычислена величина угла - нужно по этому значению выбрать одно из фиксированных значений азимута. Однако, Если по какой-либо причине для выбора результата удобнее получить другое промежуточное значение [угла] на основании тех же исходных данных [координат], то у меня нет никаких возражений. Главные критерии: простота и лаконичность формулы...
Андрей VG написал: А то что будет плюс/минус лапоть
Речь идет об указании примерного расстояния и направления на ближайшие к указанной точке реперы (метеостанции, если кому-то это интересно). Для более-менее осознанного выбора одной из реперных точек для получения расчётных данных. Возможно потом я попробую аппроксимировать значение нужного параметра по величинам параметров в реперных точках, но это вопрос отдаленного будущего
На мой взгляд - это уже существенное улучшение. Почему-то выбор табличных данных по двум параметрам вместо одного оскорбляет мое чувство прекрасного...
Ну, да Берём пару начало отсчета: 52,8775 28,63216667 точка: 59,644209 33,542096 (строка 9). Грубо цена градуса 40000 / 360 = 111 км. 59,644209 - 52,8775 - 6,766709, расстояние по широте 752 км 33,542096 - 28,63216667 = 4,909929333, расстояние по долготе 546 км с поправкой на среднюю широту Cos(56,2608545) получим 303 км. С расстоянием между ними в 811 км можно согласиться - сфера же, хотя не мешало бы и проверить. Но вот с направлением на 1 час и на север - это как это? Скорее уж северо-восток, ну или северо-северо-восток если считать треугольник на плоскости, то 22 градуса в эту сторону от севера . Так что лапоть как есть.
Андрей, в принципе для меня отклонение на 22 градуса от азимута на север все еще остается "С", т.к. границей с "СВ" является 22,5 градуса (+67,5 градусов в моей таблице) А вот границей между "XII часами" и "I часом" является 15 градусное отклонение от азимута на север (75 градусов в моей таблице) Поэтому формально программа считает корректно.
Я не возражаю против столь грубой точности с определением направления - главное не перепутать север с востоком