Excesso esférico de um triângulo
Como todos sabemos, a soma dos ângulos de qualquer triângulo plano é igual a 180 graus.
No entanto, para um triângulo esférico, a soma dos ângulos é sempre maior que 180 graus. A diferença entre a soma dos ângulos do triângulo esférico e 180 graus é denominada excesso esférico . A tarefa é calcular o excesso esférico de um triângulo com determinadas coordenadas de vértice.
Alguma experiência
Um triângulo esférico é uma parte da esfera definida por três grandes círculos da esfera.
Ambos os lados e ângulos do triângulo esférico são medidos no termo medida de ângulo, porque cada lado pode ser considerado como uma interseção da esfera e algum ângulo plano com vértice no centro da esfera:
Cada três grandes círculos distintos definem 8 triângulos, mas apenas levamos em consideração os triângulos apropriados . triângulos cujas medidas angulares e laterais satisfazem
É conveniente definir vértices de um triângulo em termos de sistema de coordenadas geográficas. Para calcular o comprimento de um arco de esfera, dada a longitude λ e latitude Φ de suas extremidades, podemos usar a fórmula:
, Onde
ou mais explicitamente:
(fonte: https://en.wikipedia.org/wiki/Haversine_formula )
As duas fórmulas básicas que podem ser usadas para resolver um triângulo esférico são:
- a lei dos cossenos:
- a lei dos senos:
(fonte: https://en.wikipedia.org/wiki/Spherical_trigonometry#Cosine_rules_and_sine_rules )
Dado três lados, é fácil calcular os ângulos usando a regra do cosseno:
Finalmente, o excesso esférico de um triângulo é definido:
O que é interessante sobre a relação entre o excesso esférico de um triângulo e sua área:
Assim, em uma esfera unitária, o excesso de um triângulo é igual à área desse triângulo!
A tarefa
Escreva uma função ou um programa que calcule o excesso esférico de um triângulo em graus, dadas as coordenadas dos vértices do triângulo. As coordenadas do vértice são fornecidas em termos de sistema de coordenadas geográficas.
Cada vértice deve ser passado em forma [latitude in degrees][N|S][longitude in degrees][E|W]
. A longitude e E
ou W
pode ser ignorada quando a latitude é 90, ou seja. 90N
, 90S
, 10N100E
, 30S20W
São descrições de vértice adequadas, enquanto 80N
ou 55S
não são.
As latitudes e longitudes são sempre inteiras nos casos de teste.
As respostas com erro menor que um grau serão aceitas (como nos exemplos abaixo). O resultado pode ser renderizado como real ou inteiro, portanto, conforme sua conveniência.
Exemplos
Entrada
90N0E
0N0E
0N90E
Resultado
89.999989
Entrada
90N
0N0E
0N90E
Resultado
89.999989
Entrada
0N0E
0N179E
90N0E
Resultado
178.998863
Entrada
10N10E
70N20W
70N40E
Resultado
11.969793
Em todos os casos de teste, longitude e latitude são números inteiros. Analisando as coordenadas dos vértices é a parte da tarefa, para um vértice deve ser passado como uma string única / literal, não é permitida a passagem 80N20E
de quatro parâmetros / strings: 80
, N
,20
, E
.
Isso garante que os vértices sejam todos distintos e nenhum dos três vértices forma um par de pontos antipodais.
Pontuação
Isso é código-golfe , então o código mais curto vence.