使用2D三边测量查找对象的位置
我试图在程序中使用三边测试来模拟它在现实生活中的情况。 我有3个发射器发出一个信号,在信号移动的每个正方形后变弱。 我正在使用一个2D数组和代码来生成一个粗略的数字圆。 这显示了其中一个发射器
00000000000000000000
00000000000000000000
00000000000000000000
00000000001000000000
00000000112110000000
00000001223221000000
00000001234321000000
00000012344432100000
00000001234321000000
00000001223221000000
00000000112110000000
00000000001000000000
00000000000000000000
00000000000000000000
00000000000000000000
00000000000000000000
00000000000000000000
00000000000000000000
00000000000000000000
00000000000000000000
我的问题是,我如何在网格中找到接收器的位置? 我如何找到所有三个圆形相交的地方? 我尝试设置圆的方程相等并解决,但这并没有给我任何东西,它给了我虚数。
如果有帮助,我还可以编辑代码以使圈子没有填充。 每个圆的半径都可以改变
每个发射器的信号强度预先由接收器知道,强度也可以改变(在100,200或300范围或任何其他范围内)
你基本上有两个问题
要点1:
点1可以通过以强力方式检查网格中的特定点来解决。 然而,在尝试找到第一个时可能会有一些优化。 只要你找到一个,你就可以根据你找到的发射器的半径和你需要找到的发射器的半径,对他人的位置进行有根据的猜测。
我会建议在接近最大已知半径的时间间隔探测网格 。 假设所有发射器完全位于电网内,您可以像下图一样进行探测(假设您的最大半径为5) - A表示探测点:
00000000000000000000
00000000000000000000
00000000000000000000
00000000001000000000
0000A00011211A000000
00000001223221000000
00000001234321000000
00000012344432100000
00000001234321000000
00000001A23221000A00
00000000112110000000
00000000001000000000
00000000000000000000
00000000000000000000
0000A00000000A000000
00000000000000000000
00000000000000000000
00000000000000000000
00000000000000000000
00000000A00000000A00
有了这个,你可以用8个探头探测你目前的电网。 当涉及到网格边缘的距离时,这可以进一步减少一些额外的检查。 但在你的情况下,你会发现你的第三个探测点位于半径范围内。 从那里开始,您可以中断探测并查找找到的发射器的中心。
既然您已经找到了至少一个发射机的中心,您可以对其他发射机的位置进行有根据的猜测,因为您知道每个发射机的距离,并且您知道与下一个发射机的距离将小于最大+最小范围的范围。 再次,您可以在网格内以适当的时间间隔探测以快速找到第二个发射器。 再次计算第二个发射器的确切中心。
第三个发射器很容易计算。 计算两个找到的发射器之间的线的中心点(在坐标系或网格中很容易)。 缺失点应位于您找到的两个发射机之间的虚线所在的两侧,距离该线路中心点尚未找到的发射机范围的最大距离。
第2点:
答案可以在这篇文章中找到
另一种选择可能是TULIP算法
链接地址: http://www.djcxy.com/p/14869.html上一篇: Find location of an object using 2D trilateration
下一篇: Find a set of points of a circle draped on a 3D height map