Kulisty nadmiar trójkąta
Jak wszyscy wiemy, suma kątów dowolnego płaskiego trójkąta jest równa 180 stopni.
Jednak w przypadku trójkąta sferycznego suma kątów jest zawsze większa niż 180 stopni. Różnica między sumą kątów sferycznych trójkątów a 180 stopni nazywa się nadwyżką sferyczną . Zadanie polega na obliczeniu sferycznego nadmiaru trójkąta z podanymi współrzędnymi wierzchołków.
Trochę tła
Trójkąt sferyczny jest częścią kuli wyznaczoną przez trzy wielkie koła kuli.
Zarówno boki, jak i kąty trójkąta sferycznego są mierzone jako miara kąta, ponieważ każdy bok można uznać za przecięcie kuli i pewien kąt płaski z wierzchołkiem w środku kuli:
Każde trzy odrębne wielkie koła definiują 8 trójkątów, ale bierzemy pod uwagę tylko właściwe trójkąty , tj. trójkąty, których kąt i wymiary boczne są spełnione
Wygodnie jest zdefiniować wierzchołki trójkąta pod względem geograficznego układu współrzędnych. Aby obliczyć długość łuku kuli, biorąc pod uwagę długość λ i szerokość geograficzną Φ jego końców, możemy użyć wzoru:
, gdzie
lub bardziej szczegółowo:
(źródło: https://en.wikipedia.org/wiki/Haversine_formula )
Dwie podstawowe formuły, których można użyć do rozwiązania trójkąta sferycznego, to:
- prawo cosinusów:
- prawo sinusów:
(źródło: https://en.wikipedia.org/wiki/Spherical_trigonometry#Cosine_rules_and_sine_rules )
Biorąc pod uwagę trzy strony, łatwo jest obliczyć kąty za pomocą reguły cosinus:
Na koniec określa się kulisty nadmiar trójkąta:
Co ciekawe w związku między sferycznym nadmiarem trójkąta a jego obszarem:
Zatem na kuli jednostkowej nadmiar trójkąta jest równy powierzchni tego trójkąta!
Zadanie
Napisz funkcję lub program, który oblicza sferyczny nadmiar trójkąta w stopniach, biorąc pod uwagę współrzędne wierzchołków trójkąta. Współrzędne wierzchołków podano w układzie współrzędnych geograficznych.
Każdy wierzchołek należy przekazać w formie [latitude in degrees][N|S][longitude in degrees][E|W]
. Długość geograficzna i E
lub W
może zostać pominięta, gdy szerokość wynosi 90, tj. 90N
, 90S
, 10N100E
, 30S20W
Są odpowiednie opisy wierzchołków, natomiast 80N
czy 55S
nie.
Szerokość i długość geograficzna są zawsze liczbami całkowitymi w przypadkach testowych.
Odpowiedzi z błędem mniejszym niż jeden stopień zostaną zaakceptowane (jak w przykładach poniżej). Wynik może być zatem renderowany jako rzeczywisty lub całkowity, dla wygody użytkownika.
Przykłady
Wejście
90N0E
0N0E
0N90E
Wynik
89.999989
Wejście
90N
0N0E
0N90E
Wynik
89.999989
Wejście
0N0E
0N179E
90N0E
Wynik
178.998863
Wejście
10N10E
70N20W
70N40E
Wynik
11.969793
We wszystkich przypadkach testowych długość i szerokość geograficzna są liczbami całkowitymi. Parsowania współrzędne wierzchołków jest częścią zadania, więc wierzchołek musi być przekazany jako jeden ciąg / dosłowny, nie wolno przechodzić 80N20E
jak cztery parametry / strun: 80
, N
, 20
, E
.
Gwarantuje to, że wszystkie wierzchołki są różne i żadne z trzech z trzech wierzchołków nie tworzy pary punktów antypodalnych.
Punktacja
To jest golf golfowy , więc wygrywa najkrótszy kod.