我正在使用纬度/经度坐标,并且我试图在表面上找到一个圆的等式,其中包括距离中心有一定距离(在曲面上)的所有点。 / p>
重要的是,它应该在非常大的距离(例如地球的一半周长)下工作,所以平地近似可能不会起作用,但假设它是“sa”完美的球体是可以的。
有人可以帮忙吗?
提前致谢!
答案 0 :(得分:1)
我有同样的问题。
我所做的是将纬度和经度转换为固定在地球中心的笛卡尔坐标(我假设它是球形的)。
我将这些坐标解释为数学向量。
我还转换了所需的“距离圆心”
到地球中心的一个角度,
也就是说,如果距离为d
,则角度为alpha = d/R
其中R
是地球的半径。
v1
只是我原始向量的cos(alpha)
倍,
也就是说,它从地球中心指向我的圆心
它的长度为R*cos(alpha)
。
其他两个向量v2
和v3
的长度为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
,您可以使用v1
和v2
的叉积并进行缩放
根据需要。