Ini tidak jauh lebih sulit di bidang daripada di pesawat, setelah Anda menyadari itu
Akibatnya, masalah dikurangi menjadi memotong garis dengan bola, yang mudah.
Berikut detailnya. Inputnya adalah titik P1 = (lat1, lon1) dan P2 = (lat2, lon2) di permukaan bumi, dianggap sebagai bola, dan dua jari-jari yang bersesuaian r1 dan r2.
Konversi (lat, lon) ke (x, y, z) koordinat geosentris. Seperti biasa, karena kita dapat memilih satuan pengukuran di mana bumi memiliki satuan jari,
x = cos(lon) cos(lat)
y = sin(lon) cos(lat)
z = sin(lat).
Pada contoh, P1 = (-90.234036 Derajat, 37.673442 Derajat) memiliki koordinat geosentris x1 = (-0.00323306, -0.7915, 0.61116) dan P2 = (-90.953669 Derajat, 36.109997 Derajat) memiliki koordinat geosentris x2 = (-0.0134464, -0.80777575 , 0,589337).
Konversikan jari-jari r1 dan r2 (yang diukur di sepanjang bola) menjadi sudut di sepanjang bola. Menurut definisi, satu mil laut (NM) adalah 1/60 derajat busur (yaitu pi / 180 * 1/60 = 0,0002908888 radian). Oleh karena itu, sebagai sudut,
r1 = 107.5 / 60 Degree = 0.0312705 radian
r2 = 145 / 60 Degree = 0.0421788 radian
The geodesik lingkaran radius r1 sekitar x1 adalah persimpangan permukaan bumi dengan Euclidean lingkup radius dosa (r1) berpusat di cos (r1) * x1.
Pesawat ditentukan oleh persimpangan bola radius sin (r1) di sekitar cos (r1) * x1 dan permukaan bumi tegak lurus dengan x1 dan melewati titik cos (r1) x1, di mana persamaannya adalah x.x1 = cos (r1) ("." mewakili produk titik biasa ); demikian juga untuk pesawat lainnya. Akan ada titik unik x0 pada persimpangan dua bidang yang merupakan kombinasi linear dari x1 dan x2. Menulis x0 = a x1 + b * x2 dua persamaan planar
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
Menggunakan fakta bahwa x2.x1 = x1.x2, yang akan saya tulis sebagai q, solusinya (jika ada) diberikan oleh
a = (cos(r1) - cos(r2)*q) / (1 - q^2),
b = (cos(r2) - cos(r1)*q) / (1 - q^2).
Dalam contoh yang sedang berjalan, saya menghitung a = 0,973503 dan b = 0,0260194.
Jelas kita membutuhkan q ^ 2! = 1. Ini berarti bahwa x1 dan x2 tidak bisa menjadi titik yang sama atau titik antipodal.
Sekarang semua titik lain pada garis perpotongan kedua bidang berbeda dari x0 dengan kelipatan beberapa vektor n yang saling tegak lurus terhadap kedua bidang. Produk silang
n = x1~Cross~x2
apakah pekerjaan yang diberikan n adalah bukan nol: sekali lagi, ini berarti bahwa x1 dan x2 tidak bertepatan atau bertolak belakang. (Kita perlu berhati-hati untuk menghitung produk silang dengan presisi tinggi, karena itu melibatkan pengurangan dengan banyak pembatalan ketika x1 dan x2 berdekatan satu sama lain.) Dalam contoh, n = (0,0272194, -0.00631254, -0.00803124) .
Oleh karena itu, kami mencari hingga dua titik dari bentuk x0 + t * n yang terletak di permukaan bumi: yaitu, panjangnya sama dengan 1. Secara ekivalen, panjang kuadratnya adalah 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
Istilah dengan x0.n menghilang karena x0 (menjadi kombinasi linear dari x1 dan x2) adalah tegak lurus terhadap n. Dua solusi mudah adalah
t = sqrt((1 - x0.x0)/n.n)
dan negatifnya. Sekali lagi presisi tinggi diperlukan, karena ketika x1 dan x2 dekat, x0.x0 sangat dekat dengan 1, yang menyebabkan hilangnya presisi floating point. Dalam contoh, t = 1.07509 atau t = -1.07509. Oleh karena itu, dua titik persimpangan sama
x0 + t*n = (0.0257661, -0.798332, 0.601666)
x0 - t*n = (-0.0327606, -0.784759, 0.618935)
Akhirnya, kami dapat mengonversi solusi ini kembali ke (lat, lon) dengan mengubah geosentris (x, y, z) ke koordinat geografis:
lon = ArcTan(x,y)
lat = ArcTan(Sqrt[x^2+y^2], z)
Untuk bujur, gunakan arctangent umum kembali nilai-nilai dalam kisaran -180 sampai 180 derajat (dalam aplikasi komputasi, fungsi ini mengambil kedua x dan y sebagai argumen bukan hanya rasio y / x; kadang-kadang disebut "atan2").
Saya mendapatkan dua solusi (-88.151426, 36.989311) dan (-92.390485, 38.238380), ditunjukkan dalam gambar sebagai titik kuning.
Sumbu menampilkan koordinat geosentris (x, y, z). Patch abu-abu adalah bagian dari permukaan bumi dari -95 ke -87 derajat bujur, 33 hingga 40 derajat lintang (ditandai dengan graticule satu derajat). Permukaan bumi telah dibuat sebagian transparan untuk menunjukkan ketiga bola. Kebenaran dari solusi yang dihitung terbukti dengan bagaimana titik kuning duduk di persimpangan bola.