W rezultacie problem sprowadza się do przecięcia linii ze sferą, co jest łatwe.
Oto szczegóły. Wejściami są punkty P1 = (lat1, lon1) i P2 = (lat2, lon2) na powierzchni ziemi, uważane za kulę, i dwa odpowiadające im promienie r1 i r2.
Konwertuj (lat, lon) na (x, y, z) współrzędne geocentryczne. Jak zwykle, ponieważ możemy wybrać jednostki miary, w których Ziemia ma promień jednostki,
x = cos(lon) cos(lat)
y = sin(lon) cos(lat)
z = sin(lat).
W przykładzie P1 = (-90,234036 stopnia, 37,673442 stopień) ma współrzędne geocentryczne x1 = (-0,00323306, -0,7915, 0,61116), a P2 = (-90.953669 stopień, 36,109997 stopnia) ma współrzędne geocentryczne x2 = (-0,0134464, -0,8077 , 0,589337).
Przelicz promienie r1 i r2 (mierzone wzdłuż kuli) na kąty wzdłuż kuli. Z definicji jedna mila morska (NM) to 1/60 stopnia łuku (co oznacza pi / 180 * 1/60 = 0,0002908888 radianów). Dlatego jako kąty
r1 = 107.5 / 60 Degree = 0.0312705 radian
r2 = 145 / 60 Degree = 0.0421788 radian
Geodezyjnej okrąg o promieniu r1 około X1 przecięcie powierzchni Ziemi z euklidesowej kuli o promieniu sin (R1) wyśrodkowany cos (R1) * X1.
Płaszczyzna wyznaczona przez przecięcie kuli o promieniu sin (r1) wokół cos (r1) * x1, a powierzchnia ziemi jest prostopadła do x1 i przechodzi przez punkt cos (r1) x1, skąd jej równanie wynosi x.x1 = cos (r1) („.” oznacza zwykły iloczyn skalarny ); podobnie w przypadku drugiej płaszczyzny. Na przecięciu tych dwóch płaszczyzn będzie unikalny punkt x0, który jest liniową kombinacją x1 i x2. Zapisując x0 = a x1 + b * x2 są dwa równania płaskie
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
Biorąc pod uwagę fakt, że x2.x1 = x1.x2, które napiszę jako q, rozwiązanie (jeśli istnieje) jest podane przez
a = (cos(r1) - cos(r2)*q) / (1 - q^2),
b = (cos(r2) - cos(r1)*q) / (1 - q^2).
W bieżącym przykładzie obliczam a = 0,973503 ib = 0,0260194.
Najwyraźniej potrzebujemy q ^ 2! = 1. Oznacza to, że x1 i x2 nie mogą być ani tym samym punktem, ani antypodalnymi punktami.
Teraz wszystkie inne punkty na linii przecięcia dwóch płaszczyzn różnią się od x0 pewną wielokrotnością wektora n, który jest wzajemnie prostopadły do obu płaszczyzn. Produkt krzyżowy
n = x1~Cross~x2
wykonuje zadanie pod warunkiem, że n jest niezerowe: ponownie oznacza to, że x1 i x2 nie są ani zbieżne ani diametralnie przeciwne. (Musimy zadbać o obliczenie iloczynu krzyżowego z wysoką precyzją, ponieważ obejmuje on odejmowanie z dużą ilością anulowania, gdy x1 i x2 są blisko siebie.) W przykładzie n = (0,0272194, -0,00631254, -0,00803124) .
Dlatego szukamy do dwóch punktów formy x0 + t * n, które leżą na powierzchni ziemi: to znaczy, że ich długość wynosi 1. Odpowiednio ich kwadratowa długość wynosi 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
Termin z x0.n znika, ponieważ x0 (będący liniową kombinacją x1 i x2) jest prostopadły do n. Oba rozwiązania łatwo są
t = sqrt((1 - x0.x0)/n.n)
i jego negatywne. Ponownie wymagana jest wysoka precyzja, ponieważ gdy x1 i x2 są blisko, x0.x0 jest bardzo bliskie 1, co prowadzi do pewnej utraty precyzji zmiennoprzecinkowej. W przykładzie t = 1,07509 lub t = -1,07509. Dwa punkty przecięcia są zatem równe
x0 + t*n = (0.0257661, -0.798332, 0.601666)
x0 - t*n = (-0.0327606, -0.784759, 0.618935)
Na koniec możemy przekonwertować te rozwiązania z powrotem na (lat, lon), przekształcając dane geocentryczne (x, y, z) na współrzędne geograficzne:
lon = ArcTan(x,y)
lat = ArcTan(Sqrt[x^2+y^2], z)
Dla długości użyć uogólnionego tangens powrocie wartości w zakresie od -180 do 180 stopni (w zastosowaniach komputerowych, funkcja wykonuje zarówno X i Y, argumentów, a nie tylko w stosunku y / x, jest czasami nazywana „ATAN2”).
Otrzymuję dwa rozwiązania (-88,151426, 36,989311) i (-92,390485, 38,238380), pokazane na rysunku jako żółte kropki.
Osie wyświetlają współrzędne geocentryczne (x, y, z). Szara łata to część powierzchni ziemi od -95 do -87 stopni długości geograficznej, od 33 do 40 stopni szerokości geograficznej (zaznaczona siatką o jeden stopień). Powierzchnia ziemi została częściowo przezroczysta, aby pokazać wszystkie trzy sfery. Poprawność obliczonych rozwiązań jest widoczna dzięki temu, jak żółte punkty znajdują się na przecięciach sfer.