Nó không khó hơn nhiều trên mặt cầu so với trên máy bay, một khi bạn nhận ra rằng
Do đó, vấn đề được giảm xuống để giao một đường thẳng với một hình cầu, rất dễ dàng.
Đây là những thông tin chi tiết. Các đầu vào là các điểm P1 = (lat1, lon1) và P2 = (lat2, lon2) trên bề mặt trái đất, được coi là một hình cầu và hai bán kính r1 và r2 tương ứng.
Chuyển đổi (lat, lon) thành (x, y, z) tọa độ địa tâm. Như thường lệ, vì chúng ta có thể chọn các đơn vị đo lường trong đó trái đất có bán kính đơn vị,
x = cos(lon) cos(lat)
y = sin(lon) cos(lat)
z = sin(lat).
Trong ví dụ, P1 = (-90,234036 Độ, 37,673442 Độ) có tọa độ địa tâm x1 = (-0,00323306, -0,7915, 0,61116) và P2 = (-90,953669 Độ, 36.109997 Độ) có tọa độ địa tâm x2 = (-0,0134 , 0,589337).
Chuyển đổi bán kính r1 và r2 (được đo dọc theo mặt cầu) thành các góc dọc theo mặt cầu. Theo định nghĩa, một hải lý (NM) là 1/60 độ cung (là pi / 180 * 1/60 = 0,0002908888 radian). Do đó, như các góc,
r1 = 107.5 / 60 Degree = 0.0312705 radian
r2 = 145 / 60 Degree = 0.0421788 radian
Các đo đạc vòng tròn bán kính r1 khoảng x1 là giao điểm của bề mặt trái đất với một Euclide lĩnh vực của tội lỗi bán kính (r1) tập trung ở cos (r1) * x1.
Mặt phẳng được xác định bởi giao điểm của hình cầu bán kính sin (r1) quanh cos (r1) * x1 và bề mặt trái đất vuông góc với x1 và đi qua điểm cos (r1) x1, khi đó phương trình của nó là x.x1 = cos (r1) ("." đại diện cho sản phẩm chấm thông thường ); tương tự cho mặt phẳng khác. Sẽ có một điểm x0 duy nhất trên giao điểm của hai mặt phẳng đó là sự kết hợp tuyến tính của x1 và x2. Viết x0 = a x1 + b * x2 hai phương trình phẳng là
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
Sử dụng thực tế là x2.x1 = x1.x2, mà tôi sẽ viết là q, giải pháp (nếu nó tồn tại) được đưa ra bởi
a = (cos(r1) - cos(r2)*q) / (1 - q^2),
b = (cos(r2) - cos(r1)*q) / (1 - q^2).
Trong ví dụ đang chạy, tôi tính a = 0,973503 và b = 0,0260194.
Rõ ràng chúng ta cần q ^ 2! = 1. Điều này có nghĩa là x1 và x2 có thể không phải là cùng một điểm cũng không phải là điểm đối cực.
Bây giờ tất cả các điểm khác trên đường giao nhau của hai mặt phẳng khác với x0 bởi một số bội của một vectơ n vuông góc với cả hai mặt phẳng. Các sản phẩm chéo
n = x1~Cross~x2
không công việc được cung cấp n là khác không: một lần nữa, điều này có nghĩa là x1 và x2 không trùng nhau và ngược chiều nhau. . .
Do đó, chúng tôi tìm kiếm tối đa hai điểm có dạng x0 + t * n nằm trên bề mặt trái đất: nghĩa là chiều dài của chúng bằng 1. Tương đương, độ dài bình phương của chúng là 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
Thuật ngữ với x0.n biến mất vì x0 (là tổ hợp tuyến tính của x1 và x2) vuông góc với n. Hai giải pháp dễ dàng là
t = sqrt((1 - x0.x0)/n.n)
và tiêu cực của nó. Một lần nữa độ chính xác cao được gọi là vì khi x1 và x2 gần, x0.x0 rất gần với 1, dẫn đến mất một số độ chính xác của dấu phẩy động. Trong ví dụ, t = 1.07509 hoặc t = -1,07509. Hai điểm giao nhau do đó bằng nhau
x0 + t*n = (0.0257661, -0.798332, 0.601666)
x0 - t*n = (-0.0327606, -0.784759, 0.618935)
Cuối cùng, chúng tôi có thể chuyển đổi các giải pháp này trở lại (lat, lon) bằng cách chuyển đổi địa tâm (x, y, z) sang tọa độ địa lý:
lon = ArcTan(x,y)
lat = ArcTan(Sqrt[x^2+y^2], z)
Đối với kinh độ, sử dụng các giá trị trả về arctangent tổng quát trong phạm vi -180 đến 180 độ (trong các ứng dụng điện toán, hàm này lấy cả x và y làm đối số thay vì chỉ tỷ lệ y / x; đôi khi nó được gọi là "ATan2").
Tôi nhận được hai giải pháp (-88.151426, 36.989311) và (-92.390485, 38.238380), được hiển thị trong hình dưới dạng các chấm màu vàng.
Các trục hiển thị tọa độ địa tâm (x, y, z). Các mảng màu xám là một phần của bề mặt trái đất từ -95 đến -87 độ kinh độ, vĩ độ 33 đến 40 độ (được đánh dấu bằng một tấm lưới một độ). Bề mặt trái đất đã được làm trong suốt một phần để hiển thị cả ba hình cầu. Tính chính xác của các giải pháp được tính toán thể hiện rõ qua cách các điểm màu vàng nằm ở giao điểm của các mặt cầu.