Сферичний надлишок трикутника
Як ми всі знаємо, сума кутів будь-якого плоского трикутника дорівнює 180 градусам.
Однак для сферичного трикутника сума кутів завжди більша за 180 градусів. Різниця між сумою кутів кулястого трикутника і 180 градусів називається сферичним надлишком . Завдання - обчислити сферичний надлишок трикутника із заданими вершинними координатами.
Якесь тло
Сферичний трикутник - це частина сфери, визначена трьома великими колами сфери.
Обидві сторони і кути сферичного трикутника вимірюються в терміні вимірювання кута, оскільки кожну сторону можна розглядати як перетин сфери і деякий плоский кут з вершиною в центрі сфери:
Кожні три чіткі великі кола визначають 8 трикутників, але ми беремо до уваги лише правильні трикутники , тобто. трикутники, кут і бічні міри яких задовольняють
Зручно визначати вершини трикутника за географічною системою координат. Для обчислення довжини кулі дуги, враховуючи довготу λ та широту ends її кінців, ми можемо використовувати формулу:
, де
або більш чітко:
(джерело: 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
.
Це гарантується, що вершини всі виразні, і жодна з трьох вершин не складає пари антиподальних точок.
Оцінка балів
Це код-гольф , тому найкоротший код виграє.