GIS-LAB

Географические информационные системы и дистанционное зондирование


Форумы GIS-Lab.info

Геоинформационные системы (ГИС) и Дистанционное зондирование Земли


Вычисление азимута угла между двумя прямыми (Avenue)

Обсуждение материалов сайта: вопросы, замечания, предложения

Вычисление азимута угла между двумя прямыми (Avenue)

Сообщение Максим Дубинин » 21 апр 2006, 00:07

Обсуждение темы "Вычисление азимута и угла между двумя прямыми для прямоугольных координат"

http://gis-lab.info/qa/aveazimuth.html
  • 0

пристегивайтесь, турбулентность прямо по курсу
Аватара пользователя
Максим Дубинин
NextGIS
 
Зарегистрирован: 06 окт 2003
Откуда: Москва (на карте)
 
Сообщения: 8889
Репутация: 635
Статьи: 231
Проекты: 12/6

Сообщение selax » 15 мар 2007, 13:35

Код: Выделить всё
ab = a.distance(b)
bc = b.distance(c)
ca = c.distance(a)
alpha = (((ab^2)+(ac^2) - (bc^2))/(2*ab*ac)).ACos.AsDegrees

Разве можно менять переменные СА на АС?
  • 0

selax
Новоприбывший
 
Зарегистрирован: 15 мар 2007
 
Сообщения: 1
Репутация: 0

Сообщение Максим Дубинин » 15 мар 2007, 17:36

Вы правы, это опечатка, исправлено.
  • 0

пристегивайтесь, турбулентность прямо по курсу
Аватара пользователя
Максим Дубинин
NextGIS
 
Зарегистрирован: 06 окт 2003
Откуда: Москва (на карте)
 
Сообщения: 8889
Репутация: 635
Статьи: 231
Проекты: 12/6

Re: Вычисление азимута угла между двумя прямыми (Avenue)

Сообщение GrigoryP » 02 авг 2012, 20:58

Кажется в Excel тоже ошибки. В формуле сейчас

=ACOS((COS(G4)-COS(G5)*COS(G3))/(SIN(G5)*SIN(G3)))

cos(b) - cos(a) * cos(c)
-----------------------------
sin(a) * sin(c)

а должно быть

cos(a) - cos(b) * cos(c)
-----------------------------
sin(b) * sin(c)
  • 0

GrigoryP
Новоприбывший
 
Зарегистрирован: 02 авг 2012
 
Сообщения: 1
Репутация: 0

Re: Вычисление азимута угла между двумя прямыми (Avenue)

Сообщение zock » 02 июл 2017, 22:07

Пытаюсь воспользоваться формулой для небольшого плоского треугольника с координатами 0,0 0,0.000001 0.000001,0 Очевидно, что это почти плоский треугольник и углы должны быть 90, чуть-чуть больше 45 и чуть-чуть больше 45. Углы в радианах, на которые опираются дуги, получаются небольшие, но кажутся правильными
2,47E-08
1,74533E-08
1,74533E-08
Эти углы можно проверить, умножив на радиус Земли.

Однако углы треугольника на сфере получаются совсем странные: в радианах
0,687009033 1,943854247 0,687009033
в градусах
39,36271809 111,3746443 39,36271809
  • 0

zock
Новоприбывший
 
Зарегистрирован: 02 июл 2017
 
Сообщения: 5
Репутация: 0

Re: Вычисление азимута угла между двумя прямыми (Avenue)

Сообщение Игорь Белов » 03 июл 2017, 18:59

zock писал(а):углы треугольника на сфере получаются совсем странные

Попробуйте ещё раз, всё получится:
  • 0

Вложения
triangle.zip
Решение треугольника, данного координатами углов
(6.47 КБ) Скачиваний: 9
Игорь Белов
Гуру
 
Зарегистрирован: 04 янв 2011
Откуда: Казань (на карте)
 
Сообщения: 1358
Репутация: 823
Статьи: 12
Проекты: 1

Re: Вычисление азимута угла между двумя прямыми (Avenue)

Сообщение zock » 04 июл 2017, 15:39

а почему сферическая теорема косинусов на этой странице отличается от формулы на странице http://gis-lab.info/qa/great-circles.html ?
  • 0

zock
Новоприбывший
 
Зарегистрирован: 02 июл 2017
 
Сообщения: 5
Репутация: 0

Re: Вычисление азимута угла между двумя прямыми (Avenue)

Сообщение zock » 04 июл 2017, 16:02

Игорь Белов писал(а):
zock писал(а):углы треугольника на сфере получаются совсем странные

Попробуйте ещё раз, всё получится:


Спасибо. Только поясните, откуда взялась такая формула для расчета внутренних углов, как
A=arccos((b^2+c^2-a^2)/(2*b*c)),
где a, b, с - центральные углы, а не функции от них.

При формуле из статьи
A=arccos((cos(а)-cos(b)*cos(c))/(sin(b)*sin(c)))
я упорно получаю неправильный результат.
  • 0

zock
Новоприбывший
 
Зарегистрирован: 02 июл 2017
 
Сообщения: 5
Репутация: 0

Re: Вычисление азимута угла между двумя прямыми (Avenue)

Сообщение Игорь Белов » 04 июл 2017, 16:45

zock писал(а):поясните, откуда взялась такая формула для расчета внутренних углов, как
A=arccos((b^2+c^2-a^2)/(2*b*c)),
где a, b, с - центральные углы, а не функции от них.

При формуле из статьи
A=arccos((cos(а)-cos(b)*cos(c))/(sin(b)*sin(c)))
я упорно получаю неправильный результат.
Спокойно, сейчас разберёмся.

Формула
cos A = (b² + c² − a²) / (2 b c)
взята из планиметрии и может применяться на сфере исключительно для очень малых треугольников.

Формула
cos A = (cos a − cos b cos c) / (sin b sin c)
является формулой сферической тригонометрии, однако она плохо себя ведёт в случае очень малых треугольников.

Рекомендую следующие формулы вычисления углов:
tg (A / 2) = M / sin (p − a) ,
tg (B / 2) = M / sin (p − b) ,
tg (C / 2) = M / sin (p − c) ,
где
p = (a + b + c) / 2 ,
M² = sin (p − a) sin (p − b) sin (p − c) / sin p .
Пример с использованием этих формул:
  • 2

Вложения
triangle2.xls
Исправленный пример решения треугольника
(8 КБ) Скачиваний: 7
Игорь Белов
Гуру
 
Зарегистрирован: 04 янв 2011
Откуда: Казань (на карте)
 
Сообщения: 1358
Репутация: 823
Статьи: 12
Проекты: 1

Re: Вычисление азимута угла между двумя прямыми (Avenue)

Сообщение zock » 04 июл 2017, 23:51

Спасибо ещё раз. Это не помогло, так как точность не повысилась.

Я не написал, что эти углы мне нужны для вычисления избытка сферического треугольника. С моей стороны наивно было рассчитывать на такую точность для такой задачи. Но эти формулы помогли мне воспользоваться формулой Люилье для вычисления избытка сферического треугольника, которая даёт волне приемлемые результаты для углов с точностью до 6 знака после запятой. https://ru.wikipedia.org/wiki/%D0%A4%D0 ... 0.BA.D0.B0
  • 0

zock
Новоприбывший
 
Зарегистрирован: 02 июл 2017
 
Сообщения: 5
Репутация: 0


Вернуться в Материалы сайта

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2


(Геокруг)

© GIS-Lab и авторы, 2002-2013. При использовании материалов сайта, ссылка на GIS-Lab и авторов обязательна. Содержание материалов - ответственность авторов (подробнее).