地理位置 - 如何检查 2 个圆圈是否重叠

Geolocations - How to check if 2 circles are overlapping

假设我们有 2 个位置(纬度、经度),每个位置都有一个半径(可能彼此不同),形成一个圆。如何检查这两个圆圈是否重叠?

检查中心之间的距离是否小于半径之和。

假设圆 AB 的半径为 Ar Br,坐标(Ax Ay) 和 (Bx, By)分别是圆圈之间的距离是

D = sqrt( (Ax - Bx)2 + (Ay - By)2 )

它们在

时重叠

D < Ar + Br

但是有一个问题:圆心位于球体上。它们之间的最短距离是球体表面下方的直线。它们之间沿着表面的距离会更大。例如,北极和南极之间的距离是 2 个地球半径,但在表面上的路径将是 个地球半径。此外,这些圆圈不重叠。所以,上面的等式只有在距离比较小时才成立。