Kugelförmiger Überschuss eines Dreiecks
Wie wir alle wissen, beträgt die Winkelsumme eines ebenen Dreiecks 180 Grad.
Bei einem sphärischen Dreieck ist die Winkelsumme jedoch immer größer als 180 Grad. Die Differenz zwischen der Summe der sphärischen Dreieckswinkel und 180 Grad wird als sphärischer Überschuss bezeichnet . Die Aufgabe besteht darin, den sphärischen Überschuss eines Dreiecks mit gegebenen Scheitelpunktkoordinaten zu berechnen.
Etwas Hintergrund
Ein sphärisches Dreieck ist ein Teil der Kugel, der durch drei große Kreise der Kugel definiert wird.
Beide Seiten und Winkel des sphärischen Dreiecks werden als Winkelmaß gemessen, da jede Seite als Schnittpunkt der Kugel mit einem planaren Winkel mit dem Scheitelpunkt in der Mitte der Kugel betrachtet werden kann:
Jeweils drei verschiedene Großkreise definieren 8 Dreiecke, aber wir berücksichtigen nur die richtigen Dreiecke , d. H. Dreiecke, deren Winkel und Seitenmaße genügen
Es ist praktisch, Eckpunkte eines Dreiecks als geografisches Koordinatensystem zu definieren. Um die Länge eines Kugelbogens bei gegebener Länge λ und Breite Φ seiner Enden zu berechnen, können wir die Formel verwenden:
, wo
oder genauer gesagt:
(Quelle: https://en.wikipedia.org/wiki/Haversine_formula )
Die zwei Grundformeln, die zum Lösen eines sphärischen Dreiecks verwendet werden können, sind:
- das Gesetz der Cosinus:
- das Gesetz der Sinus:
(Quelle: https://en.wikipedia.org/wiki/Spherical_trigonometry#Cosine_rules_and_sine_rules )
Bei drei gegebenen Seiten ist es einfach, die Winkel unter Verwendung der Kosinusregel zu berechnen:
Schließlich wird der kugelförmige Überschuss eines Dreiecks definiert:
Was ist interessant an der Beziehung zwischen dem sphärischen Überschuss eines Dreiecks und seiner Fläche:
Auf einer Einheitskugel entspricht der Überschuss eines Dreiecks der Fläche dieses Dreiecks!
Die Aufgabe
Schreiben Sie eine Funktion oder ein Programm, das den sphärischen Überschuss eines Dreiecks in Grad berechnet, wenn die Eckpunktkoordinaten des Dreiecks gegeben sind. Die Scheitelpunktkoordinaten werden als geografisches Koordinatensystem angegeben.
Jeder Eckpunkt sollte in Form übergeben werden [latitude in degrees][N|S][longitude in degrees][E|W]
. Längengrad und E
oder W
können übersprungen werden, wenn der Breitengrad 90 ist . 90N
, 90S
, 10N100E
, 30S20W
Sind richtige Vertex Beschreibungen, während 80N
oder 55S
nicht sind.
Die Breiten- und Längengrade sind in den Testfällen immer ganzzahlig.
Die Antworten mit einem Fehler von weniger als einem Grad werden akzeptiert (wie in den folgenden Beispielen). Das Ergebnis kann daher je nach Bedarf sowohl als reelle als auch als ganze Zahl dargestellt werden.
Beispiele
Eingang
90N0E
0N0E
0N90E
Ausgabe
89.999989
Eingang
90N
0N0E
0N90E
Ausgabe
89.999989
Eingang
0N0E
0N179E
90N0E
Ausgabe
178.998863
Eingang
10N10E
70N20W
70N40E
Ausgabe
11.969793
In allen Testfällen sind Längen- und Breitengrad ganze Zahlen. Parsen der Vertex - Koordinaten der Teil der Aufgabe ist es , so eine Ecke muss als Einzelsaite / wörtliche weitergegeben wird, ist es nicht erlaubt passieren 80N20E
als vier Parameter / Strings: 80
, N
, 20
, E
.
Dies stellt sicher, dass alle Scheitelpunkte unterschiedlich sind und keiner der drei Scheitelpunkte ein antipodales Punktpaar bildet.
Wertung
Das ist Code-Golf , also gewinnt der kürzeste Code.