Сферический избыток треугольника
Как мы все знаем, сумма углов любого плоского треугольника равна 180 градусам.
Однако для сферического треугольника сумма углов всегда больше 180 градусов. Разница между суммой углов сферического треугольника и 180 градусов называется сферическим избытком . Задача состоит в том, чтобы вычислить сферический избыток треугольника с заданными координатами вершины.
Некоторый фон
Сферический треугольник - это часть сферы, определяемая тремя большими кругами сферы.
Обе стороны и углы сферического треугольника измеряются в терминах угловой меры, потому что каждую сторону можно рассматривать как пересечение сферы и некоторый плоский угол с вершиной в центре сферы:
Каждые три отличных больших круга определяют 8 треугольников, но мы принимаем во внимание только правильные треугольники , т.е. треугольники, чьи углы и боковые меры удовлетворяют
Вершины треугольника удобно определять в терминах географической системы координат. Чтобы вычислить длину дуги сферы с учетом долготы λ и широты Φ ее концов, мы можем использовать формулу:
, где
или более точно:
(источник: https://en.wikipedia.org/wiki/Haversine_formula )
Две основные формулы, которые можно использовать для решения сферического треугольника:
- закон косинусов:
- закон синусов:
(источник: https://en.wikipedia.org/wiki/Spherical_trigonometry#Cosine_rules_and_sine_rules )
Учитывая три стороны, легко вычислить углы, используя правило косинуса:
Наконец, сферический избыток треугольника определяется:
Что интересно о связи между сферическим избытком треугольника и его площадью:
Таким образом, на единичной сфере избыток треугольника равен площади этого треугольника!
Задание
Напишите функцию или программу, которая будет вычислять сферический избыток треугольника в градусах с учетом координат вершин треугольника. Координаты вершин приведены в терминах географической системы координат.
Каждая вершина должна быть передана в форме [latitude in degrees][N|S][longitude in degrees][E|W]
. Долгота и E
или W
могут быть пропущены, когда широта 90, т.е. 90N
, 90S
, 10N100E
, 30S20W
Являются соответствующими описаниями вершин, в то время 80N
или 55S
нет.
Широты и долготы всегда целые в тестовых случаях.
Ответы с ошибкой менее одного градуса будут приняты (как в примерах ниже). Таким образом, результат может быть представлен как действительный или как целое число, по вашему усмотрению.
Примеры
вход
90N0E
0N0E
0N90E
Выход
89.999989
вход
90N
0N0E
0N90E
Выход
89.999989
вход
0N0E
0N179E
90N0E
Выход
178.998863
вход
10N10E
70N20W
70N40E
Выход
11.969793
Во всех тестовых случаях долгота и широта являются целыми числами. Синтаксические координаты вершин является частью задачи, поэтому вершина должна быть передана в одну строке / буквальной, он не может проходить в 80N20E
виде четырех параметров / строк: 80
, N
, 20
, E
.
Это гарантирует, что все вершины различны, и ни одна из трех вершин не образует пару антиподальных точек.
счет
Это код-гольф , поэтому выигрывает самый короткий код.