Страница 1 из 1

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

Добавлено: 21 апр 2006, 00:07
Максим Дубинин
Обсуждение темы "Вычисление азимута и угла между двумя прямыми для прямоугольных координат"

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

Добавлено: 15 мар 2007, 13:35
selax

Код: Выделить всё

ab = a.distance(b)
bc = b.distance(c)
ca = c.distance(a)
alpha = (((ab^2)+(ac^2) - (bc^2))/(2*ab*ac)).ACos.AsDegrees
Разве можно менять переменные СА на АС?

Добавлено: 15 мар 2007, 17:36
Максим Дубинин
Вы правы, это опечатка, исправлено.

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

Добавлено: 02 авг 2012, 20:58
GrigoryP
Кажется в 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)

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

Добавлено: 02 июл 2017, 22:07
zock
Пытаюсь воспользоваться формулой для небольшого плоского треугольника с координатами 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

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

Добавлено: 03 июл 2017, 18:59
Игорь Белов
zock писал(а):углы треугольника на сфере получаются совсем странные
Попробуйте ещё раз, всё получится:

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

Добавлено: 04 июл 2017, 15:39
zock
а почему сферическая теорема косинусов на этой странице отличается от формулы на странице http://gis-lab.info/qa/great-circles.html ?

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

Добавлено: 04 июл 2017, 16:02
zock
Игорь Белов писал(а):
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)))
я упорно получаю неправильный результат.

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 .
Пример с использованием этих формул:

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

Добавлено: 04 июл 2017, 23:51
zock
Спасибо ещё раз. Это не помогло, так как точность не повысилась.

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