Possible Duplicate:
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之间的距离,D2是P2与Px之间的距离,等等。
如何计算Px的坐标?
=根据回复进行了编辑=
非常感谢!
PS。如果您要指向任何API,我希望它使用JavaScript。
最佳答案
您必须了解,这里会有多个点满足数学约束。仔细想想,如果球体上有两个点(暂时忽略测地线形式),P1和P2,并且还有另一个点T1,即距P1的距离x和距P2的距离y,那么您将拥有另一个对称点(镜像另一方面,可以说,T1'点将满足相同的距离条件。
更糟糕的是:考虑一个直径为D的球的情况。您的P1在北极,而您的P2在南极。您是否看到赤道上的所有点都将满足您的条件?
将其应用于您的示例:考虑北极处的P1。考虑南极的P2。考虑到Px的距离,即D1 = D2 =(2pie.r)/ 4。看到问题了吗?赤道上的所有点都满足此要求,而不是一个唯一的点。实际上,在这种情况下,即使D1!= D2,也将具有点满足这些约束的较小的同心线(与赤道同心)。
您遇到的Px过多,而不是一个。为了达到球形表面上的奇点,描述约束将更加具体。
最后,建立上下文的正确性很重要。您的算法是否应该支持所有符合条件的点?还是应该更改您的条件,以便算法始终评估为单点。小心。
一些可以帮助您的链接:
维基百科:http://en.wikipedia.org/wiki/Spherical_coordinates
因此:Plotting a point on the edge of a sphere
根据您的三点示例进行更新:
同样,可以满足您的条件的多个点。如果P1,P2,P3位于同一弧线上怎么办?请参见下图。即使只有三个点,也无法保证会有一个第四点满足距离标准。即使有n分,也没有这样的保证。
在数学语言中,对于一组n个随机点以及与这些单个点的一组距离,满足距离标准的一组所得点可能具有多个元素。
您可能会愚蠢地想:哦,这个家伙总是假设点位于同一弧线上。好吧,您不是在制定特殊算法,是吗?您的算法将是一个广义的解决方案,不是吗?
您需要保证这些点不在同一弧上(在一组n点中,我认为至少有一个点不能在同一弧上)。
为了将源点保持在最低限度:您需要在点之间建立梯形关系,因为这样,仅使用两个点,三角形关系就将产生一个点。
什么三角形可视化为:您有两个点,第三个未知点。您提到的所有距离都是球面的,即曲面距离。您是否看到这些点之间也有平坦的距离?您能想象一下,会有一个平面穿过这些点,将球体切成薄片,对吗?我说这是为了强调您不必担心表面曲率(因此不必担心3d球面弧度角)。您可以看到下面的2d三角形,该三角形的未知顶点也将是球体表面上的第三个点。
我知道这可能对您来说很难想象,我将尝试为此绘制图表。 (找不到任何好的在线工具!)。
最后,这将有很大帮助:请仔细阅读。
摘自Wikipedia:http://en.wikipedia.org/wiki/Great-circle_distance
大圆或矫正距离是指球体表面上任意两个点之间沿着球体表面上的路径(相对于穿过球体内部)所测得的最短距离。由于球面几何不同于普通的欧几里得几何,所以距离方程采用不同的形式。欧几里得空间中两点之间的距离是从一个点到另一个点的直线的长度。但是,在球体上没有直线。在非欧几里得几何中,直线被测地线代替。球体上的测地线是大圆(球体上的圆,其中心与球体的中心重合)。
更多更新:
长和纬度之间的转换可以通过Haversine公式完成。谷歌一下。看到这里:Converting from longitude\latitude to Cartesian coordinates
在这里:http://en.wikipedia.org/wiki/World_Geodetic_System
关于javascript - 在球形条件下,给定3个点及其到第4个点的距离,如何找到其地理位置? ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11500217/