如何在纬度/经度坐标的特定距离内找到点

时间:2015-02-18 21:43:09

标签: geometry coordinates trigonometry

我正在使用纬度/经度坐标,并且我试图在表面上找到一个圆的等式,其中包括距离中心有一定距离(在曲面上)的所有点。 / p>

重要的是,它应该在非常大的距离(例如地球的一半周长)下工作,所以平地近似可能不会起作用,但假设它是“sa”完美的球体是可以的。

有人可以帮忙吗?

提前致谢!

1 个答案:

答案 0 :(得分:1)

我有同样的问题。 我所做的是将纬度和经度转换为固定在地球中心的笛卡尔坐标(我假设它是球形的)。 我将这些坐标解释为数学向量。 我还转换了所需的“距离圆心” 到地球中心的一个角度, 也就是说,如果距离为d,则角度为alpha = d/R 其中R是地球的半径。

然后我找到了三个向量。 第一个向量v1只是我原始向量的cos(alpha)倍, 也就是说,它从地球中心指向我的圆心 它的长度为R*cos(alpha)。 其他两个向量v2v3的长度为R*sin(alpha), 它们都与v1和彼此垂直。

然后我可以通过

获得所需圆圈上的任何一点
    v1 + cos(beta)*v2 + sin(beta)*v3

其中beta的范围为0到2 * pi。 最后,如果我想要那个点的纬度和经度, 我将它从笛卡尔坐标转换回来。

如果你从未真正关心笛卡尔坐标模型,但会 而是仅使用 产生的纬度和经度, 您可以通过假设R == 1来略微简化程序。 然后,您可以简化公式,以便您永远不必定义 变量R

任一方向的坐标转换都非常简单。 查找向量v2的简便方法是采用v1的x和y坐标 (忽略z),将得到的矢量在x-y平面上旋转90度 (所以如果你从(x,y,z)开始,新的向量是(-y,x,0)), 然后将矢量缩放到所需的大小。 当然,如果v1的x和y坐标为零,那么你可以 让v2成为x-y平面中的任何向量。 要获得v3,您可以使用v1v2的叉积并进行缩放 根据需要。