可能重复: Trilateration using 3 latitude and longitude points, and 3 distances
这更像是一道数学题,而不是编程题。基本上,我有P1:(lat1,lon1),P2:(lat2,lon2),P3:(lat3,lon3)和D1,D2,D3,和第四个未知点Px:(latx,lonx);也有P1,P2,P3不位于大圈的同一条道路上,D1是P1和Px之间的距离,D1是P1和Px之间的距离,等等。
我怎么算出Px的坐标?
=基于reply=编辑
非常感谢!
PS。如果您要指向任何API,我希望它在JavaScript中。
发布于 2012-07-16 08:07:37
你必须明白,在这里,会有多个满足数学约束的。仔细想想,如果你在球面上有两个点(现在忽略了测地线的形式),P1和P2,而你有另一个点T1,在x到P1,距离y到P2,那么就会有另一个对称的(镜像的)点T1‘,它会满足相同的距离条件,换句话说。
更糟糕的是:考虑直径D的球体,你的P1在北极,你的P2在南极。你看到赤道上的所有点都满足你的条件了吗?
将此应用于您的示例:考虑北极的P1。以南极P2为例。考虑到Px的距离,即D1 = D2 = (2.pie.r)/4。看到问题了吗?赤道上的所有点都满足这个要求,而不是一个唯一的点。事实上,在这种情况下,即使D1 != D2,也有较小的同心线(同心圆到赤道),其点满足这些约束。
太多的Px在你的案子里,一个也没有。若要达到球面上的奇异点,则描述约束将更为具体。
最后,建立上下文的正确性是非常重要的。你的算法应该支持所有符合标准的点吗?或者,如果您的条件被更改,使算法的计算结果为奇点,始终如此。注意。
一些帮助您的链接:
维基百科:coordinates
所以:Plotting a point on the edge of a sphere
更新,基于您的三点示例:
同样,可以有多个点满足您的标准。如果P1,P2,P3躺在同一条弧形上呢?见下图。即使有三分,也不能保证会有第四个点符合距离标准。即使有n点,也没有这样的保证。
在数学语言中,对于n个随机点的集合,以及与这些单个点的一组距离,满足距离准则的结果点集可能有多个元素。

你可能会被骗到想:哦,这家伙总是假设点在同一条弧线上。你不是在做特殊的算法吧?你的algo将是一个通用的解决方案,不是吗?
您需要保证点不在同一弧上(在一组n个点中,我认为至少有一个点不可能在同一弧上)。
为了使源点保持最小值:需要在点之间建立训练关系,因为这样,只使用两个点,三角形关系就会产生精确的一个点。
什么三角?想象一下:你有两个点,第三个未知点。你提到的所有距离都是球形的,即曲面距离。你看到这些点之间也有平坦的距离吗?你能想象,会有一个平面穿过这些点,切割球体,对吗?我这样说是为了强调,你不需要担心曲面曲率(因此三维立体角度)。你可以看到底层的2d三角形,它的未知顶点也是球面上的第三个点。
我知道这对你来说可能很难想象,我会试着为这个做一个图表。(找不到任何好的在线工具!)
最后,这将有很大的帮助:请仔细阅读。
摘自维基百科: http://en.wikipedia.org/wiki/Great-circle
大圆或正向距离是球体表面上任意两点之间的最短距离,它沿球体表面的一条路径测量(而不是穿过球体的内部)。由于球面几何与一般欧几里德几何不同,距离方程呈现出不同的形式。欧几里德空间中两点之间的距离是一条直线从一个点到另一个点的长度。然而,在球体上,没有直线。在非欧几里德几何中,直线被大地测量所取代.球体上的测地线是大圆(球面上的圆圈,其中心与球心重合)。
更多更新:
lats到笛卡尔坐标之间的转换可以通过Haversine公式来完成。用谷歌搜索。见此处:Converting from longitude\latitude to Cartesian coordinates和System
https://stackoverflow.com/questions/11500217
复制相似问题