Javascript 在球形条件下,给定3个点及其到第4个点的距离,a如何找到其地理位置?

Javascript 在球形条件下,给定3个点及其到第4个点的距离,a如何找到其地理位置?,javascript,geolocation,triangulation,great-circle,Javascript,Geolocation,Triangulation,Great Circle,可能重复: 这更像是一个数学问题,而不是编程问题。基本上,我有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的坐标 =根据回复进行编辑= 非常感谢 注:如果您要指向任何API,我希望它是JavaScript。您必须了解,这里将有多个点满足数学约束。仔细想想,如果球体

可能重复:

这更像是一个数学问题,而不是编程问题。基本上,我有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的坐标

=根据回复进行编辑=

非常感谢


注:如果您要指向任何API,我希望它是JavaScript。

您必须了解,这里将有多个点满足数学约束。仔细想想,如果球体上有两个点(暂时忽略测地线形式),P1和P2,还有另一个点T1,距离P1的距离为x,距离P2的距离为y,那么可以说,在另一侧有另一个对称(镜像)点T1',它将满足相同的距离条件

更糟的是,考虑一个直径为D的球体。你的P1位于北极点,而你的P2位于South极点。你看到赤道上的所有点都满足你的条件了吗

将此应用于您的示例:在北极点中考虑P1。考虑南极的P2。考虑距离PX,即D1=D2=(2。PIE.R)/ 4。看到问题了吗?赤道上的所有点都满足这一点,而不是一个唯一的点。事实上,对于这种情况,即使D1!=D2,则有较小的同心线(与赤道同心),其点满足这些约束

你的案子里有太多的Px,一个都没有。对于球面上的奇点,描述约束将更加具体

最后,确定上下文的正确性非常重要。您的算法是否应支持所有符合标准的点?或者,您的标准是否应该更改,以使算法始终计算为奇点。小心点

一些帮助您的链接:

维基百科:
所以:

根据您的三点示例更新:


同样,可以有多个点满足您的标准。如果P1、P2、P3位于同一弧上会怎样?见下图。即使有三个点,也不能保证有一个第四点满足距离标准。即使有n点,也没有这样的保证

在数学语言中,对于一组n个随机点以及与这些独立点之间的一组距离,满足距离标准的结果点集可能有多个元素

你可能会被愚弄到想:哦,这家伙总是假设点位于同一条弧上。你不是在做一个特殊的算法吧?你的算法将是一个广义解,不是吗

您需要保证这些点不在同一条弧上(在一组n个点中,我认为至少有1个点不能在同一条弧上)

为了将源点保持在最小值:您需要在点之间建立规则关系,因为这样,仅使用两个点,三角形关系将只生成一个点

什么三角形?想象一下:你有两个点,还有第三个未知点。您提到的所有距离都是球形的,即曲面距离。你看到这些点之间也有平坦的距离吗?你能想象,有一个平面穿过这些点,切割球体,对吗?我这样说是为了强调,您不需要担心曲面曲率(因此三维立体角)。您可以看到下面的二维三角形,其未知顶点也将是球体曲面上的第三个点

我知道这对你来说可能很难想象,我会试着做一个图表。(找不到任何好的在线工具!)

最后,这将有很大的帮助:请仔细阅读

摘自维基百科:

大圆或正交距离是沿球体表面上的路径测量的球体表面上任意两点之间的最短距离(与穿过球体内部相对)。因为球面几何不同于普通的欧几里德几何,所以距离方程的形式不同。欧几里德空间中两点之间的距离是一条直线从一点到另一点的长度。然而,在球体上没有直线。在非欧几里德几何中,用测地线代替直线。球体上的测地线是大圆(球体上圆心与球体中心重合的圆)

更多更新:

可以通过哈弗森公式将长纬度坐标转换为笛卡尔坐标。谷歌。请看这里:
这里:

谢谢你的回复,我已经更新了问题,以便更清楚。我的目标是指定一个最小的坐标和相对距离,以找到未知的位置。再次感谢您指出描述不好的问题,我再次更新了它。这些点之间距离要有多远,平面投影和二维三角测量能满足您的需要吗?已知点彼此相距几公里,未知点可以从几百米到几百公里不等。我在这里找到了一些答案:回答我的问题。谢谢