圆周交点算法
我有一组点,其中(点)我知道坐标(在我的坐标平面,x / y)。 然后我有一个未知坐标点,但我知道从“已知”点到该点的距离。 我正在寻找“未知”点坐标。 应该是一种三角形。
我想过用方程组描述情况。
假设这个数据:
coord[n] basePoints;
double[n] dist;
coord result;
让我们一起思考一下:
struct {
double x,y;
};
现在,圆周方程是:
x^2 + y^2 + ax + bx + c = 0
where:
a = basePoint[i].x
b = basePoint[i].y
c = a^2 + b^2 + r^2
r = dist[i]
在这种情况下,我们需要3个点来精确确定结果点的位置,所以我们需要一个包含三个方程的系统。 问题是:是否有一些快速的方法来找出结果坐标,并且没有,是否有算法可以遵循?
编辑:
我发现我在这里寻找的算法使用3个纬度和经度点以及3个距离进行三角测量。
对于方法和维基百科文章的名字,还要感谢@hardmath。
重述问题:您有n
以basePoint[n]
为中心的圆,半径dist[n]
已知有一个公共交点。 你想找到那一点。
以前两个圆圈并找到它们的交点(s)。 有1或2(或0,但那么问题没有解决方案)。 如果是1,那应该是答案。 如果2,用下一个圆圈消除歧义。 您可以继续确认该点位于所有其他圈子中。
首先,你说你有n个点的坐标,和另一个点的距离(所以n个距离)。
如果你的坐标只有2个点,并且你有两个坐标和第三个点(未知)之间的距离,说X(x,y)。
假设你的第一个点是A(x1,y1),你的第二个点是B(x2,y2)
现在你想找到未知的点X(x,y)
你可以像这样得到A和x之间的距离
d1 = sqrt((x1-x)^2 +(y1-y)^2)
这里你已经知道了x1,y1和d
B和X之间的距离相似
d2 = sqrt((x2-x)^2-(y2-y)^2)
所以通过这2个方程,你将得到2个线性方程,其中有2个这种类型的未知变量
mx+ny - d1 = 0
and
px+ qy - d2 = 0
你可以求解这两个方程来得到点X(x,y)的x和y坐标。
你没有提到你正在使用什么编程语言,但你可以使用你选择的任何编程语言来实现它。 你不需要n个点和n个距离来计算未知点,你可以用2点计算它。
链接地址: http://www.djcxy.com/p/14865.html上一篇: Circumference intersection algorithm
下一篇: Localising a receiver using trilateration of base station signal strengths?