Não é muito mais difícil na esfera do que no avião, uma vez que você reconhece que
Consequentemente, o problema é reduzido ao cruzamento de uma linha com uma esfera, o que é fácil.
Aqui estão os detalhes. As entradas são os pontos P1 = (lat1, lon1) e P2 = (lat2, lon2) na superfície da Terra, considerados como uma esfera, e dois raios correspondentes r1 e r2.
Converter (lat, lon) em (x, y, z) coordenadas geocêntricas. Como sempre, porque podemos escolher unidades de medida nas quais a Terra possui um raio unitário,
x = cos(lon) cos(lat)
y = sin(lon) cos(lat)
z = sin(lat).
No exemplo, P1 = (-90.234036 Grau, 37.673442 Grau) possui coordenadas geocêntricas x1 = (-0.00323306, -0.7915, 0.61116) e P2 = (-90.953669 Grau, 36.109997 Grau) possui coordenadas geocêntricas x2 = (-0.0134464, -0.807775 0,589337).
Converta os raios r1 e r2 (medidos ao longo da esfera) em ângulos ao longo da esfera. Por definição, uma milha náutica (NM) é 1/60 de grau de arco (que é pi / 180 * 1/60 = 0,0002908888 radianos). Portanto, como ângulos,
r1 = 107.5 / 60 Degree = 0.0312705 radian
r2 = 145 / 60 Degree = 0.0421788 radian
O círculo geodésico do raio r1 em torno de x1 é a interseção da superfície da Terra com uma esfera euclidiana de raio sin (r1) centrada em cos (r1) * x1.
O plano determinado pela interseção da esfera do raio sin (r1) em torno de cos (r1) * x1 e a superfície da Terra é perpendicular a x1 e passa pelo ponto cos (r1) x1, de onde sua equação é x.x1 = cos (r1) (o "." representa o produto escalar usual ); da mesma forma para o outro plano. Haverá um ponto único x0 na interseção desses dois planos que é uma combinação linear de x1 e x2. Escrevendo x0 = a x1 + b * x2, as duas equações planares são
cos(r1) = x.x1 = (a*x1 + b*x2).x1 = a + b*(x2.x1)
cos(r2) = x.x2 = (a*x1 + b*x2).x2 = a*(x1.x2) + b
Usando o fato de que x2.x1 = x1.x2, que escreverei como q, a solução (se existir) é dada por
a = (cos(r1) - cos(r2)*q) / (1 - q^2),
b = (cos(r2) - cos(r1)*q) / (1 - q^2).
No exemplo em execução, calculo a = 0,973503 eb = 0,0260194.
Evidentemente, precisamos de q ^ 2! = 1. Isso significa que x1 e x2 não podem ser o mesmo ponto nem pontos antipodais.
Agora todos os outros pontos na linha de interseção dos dois planos diferem de x0 por algum múltiplo de um vetor n que é mutuamente perpendicular a ambos os planos. O produto cruzado
n = x1~Cross~x2
faz o trabalho fornecido n é diferente de zero: mais uma vez, isso significa que x1 e x2 não são coincidentes nem diametralmente opostos. (Precisamos ter o cuidado de calcular o produto cruzado com alta precisão, pois envolve subtrações com muito cancelamento quando x1 e x2 estão próximos um do outro.) No exemplo, n = (0,0272194, -0,00631254, -0,00803124) .
Portanto, buscamos até dois pontos da forma x0 + t * n que se encontram na superfície da Terra: ou seja, seu comprimento é igual a 1. Equivalentemente, seu comprimento ao quadrado é 1:
1 = squared length = (x0 + t*n).(x0 + t*n) = x0.x0 + 2t*x0.n + t^2*n.n = x0.x0 + t^2*n.n
O termo com x0.n desaparece porque x0 (sendo uma combinação linear de x1 e x2) é perpendicular a n. As duas soluções são facilmente
t = sqrt((1 - x0.x0)/n.n)
e é negativo. Mais uma vez, é necessária alta precisão, porque quando x1 e x2 estão próximos, x0.x0 está muito próximo de 1, levando a uma perda de precisão do ponto flutuante. No exemplo, t = 1,07509 ou t = -1,07509. Os dois pontos de interseção, portanto, são iguais
x0 + t*n = (0.0257661, -0.798332, 0.601666)
x0 - t*n = (-0.0327606, -0.784759, 0.618935)
Por fim, podemos converter essas soluções de volta para (lat, lon) convertendo as coordenadas geocêntricas (x, y, z) em geográficas:
lon = ArcTan(x,y)
lat = ArcTan(Sqrt[x^2+y^2], z)
Para a longitude, usar o arco tangente generalizada retornando valores na faixa de -180 a 180 graus (em aplicações de computação, esta função leva ambos x e y como argumentos ao invés de apenas a relação y / x, que é às vezes chamado de "ATAN2").
Eu obtenho as duas soluções (-88.151426, 36.989311) e (-92.390485, 38.238380), mostradas na figura como pontos amarelos.
Os eixos exibem as coordenadas geocêntricas (x, y, z). A mancha cinza é a parte da superfície da Terra de -95 a -87 graus de longitude e 33 a 40 graus de latitude (marcada com uma gratícula de um grau). A superfície da Terra foi parcialmente transparente para mostrar as três esferas. A correção das soluções computadas é evidente pela forma como os pontos amarelos ficam nas interseções das esferas.