Eccesso sferico di un triangolo
Come tutti sappiamo, la somma degli angoli di qualsiasi triangolo planare è pari a 180 gradi.
Tuttavia, per un triangolo sferico, la somma degli angoli è sempre maggiore di 180 gradi. La differenza tra la somma degli angoli triangolari sferici e 180 gradi è chiamata eccesso sferico . Il compito è calcolare l'eccesso sferico di un triangolo con le coordinate del vertice indicate.
Qualche sfondo
Un triangolo sferico è una parte della sfera definita da tre grandi cerchi della sfera.
Entrambi i lati e gli angoli del triangolo sferico sono misurati nel termine della misura angolare, poiché ogni lato può essere considerato come un'intersezione della sfera e un angolo planare con vertice al centro della sfera:
Ogni tre grandi cerchi distinti definiscono 8 triangoli, ma prendiamo in considerazione solo i triangoli appropriati , vale a dire. triangoli le cui misure angolari e laterali soddisfano
È conveniente definire i vertici di un triangolo in termini di sistema di coordinate geografiche. Per calcolare la lunghezza di un arco di sfera data la longitudine λ e la latitudine Φ delle sue estremità possiamo usare la formula:
, dove
o più esplicitamente:
(fonte: https://en.wikipedia.org/wiki/Haversine_formula )
Le due formule di base che possono essere utilizzate per risolvere un triangolo sferico sono:
- la legge dei coseni:
- la legge dei seni:
(fonte: https://en.wikipedia.org/wiki/Spherical_trigonometry#Cosine_rules_and_sine_rules )
Dati tre lati, è facile calcolare gli angoli usando la regola del coseno:
Infine, viene definito l'eccesso sferico di un triangolo:
Cosa c'è di interessante nella relazione tra l'eccesso sferico di un triangolo e la sua area:
Quindi su una sfera unitaria, l'eccesso di un triangolo è uguale all'area di quel triangolo!
L'obiettivo
Scrivi una funzione o un programma che calcolerà l'eccesso sferico di un triangolo in gradi, date le coordinate dei vertici del triangolo. Le coordinate del vertice sono fornite in termini di sistema di coordinate geografiche.
Ogni vertice deve essere passato nella forma [latitude in degrees][N|S][longitude in degrees][E|W]
. La longitudine e E
o W
può essere saltata quando la latitudine è 90 ie. 90N
, 90S
, 10N100E
, 30S20W
Sono le descrizioni appropriate vertex, mentre 80N
o 55S
non lo sono.
Le latitudini e le lunghezze sono sempre intere nei casi di test.
Le risposte con errore inferiore a un grado saranno accettate (come negli esempi seguenti). Il risultato può essere reso come reale o intero quindi, per tua comodità.
Esempi
Ingresso
90N0E
0N0E
0N90E
Produzione
89.999989
Ingresso
90N
0N0E
0N90E
Produzione
89.999989
Ingresso
0N0E
0N179E
90N0E
Produzione
178.998863
Ingresso
10N10E
70N20W
70N40E
Produzione
11.969793
In tutti i casi di test longitudine e latitudine sono numeri interi. Parsing le coordinate dei vertici è la parte del compito, quindi un vertice deve essere passata come singola stringa / letterale, non è consentito il passaggio 80N20E
da quattro parametri / stringhe: 80
, N
, 20
, E
.
Questo è garantito che i vertici sono tutti distinti e nessuno dei due vertici costituisce una coppia di punti antipodali.
punteggio
Questo è code-golf , quindi vince il codice più corto.