我在已知位置有两个信标。 如何根据准确度计算两个信标之间iPhone的确切2d位置。
答案 0 :(得分:4)
我同意jrturton。它只能在高度受控的条件下工作并且有三个信标,结果将远非完美。以下是使用两个信标计算时发生的情况:
将其视为三角形。
使用distance formula,你有两个方程式:
20m = sqrt((1 - iPhone.x)^ 2 +(2 - iPhone.y)^ 2)
40m = sqrt((10 - iPhone.x)^ 2 +(2 - iPhone.y)^ 2)
现在您需要解决iPhone.x
和iPhone.y
20 ^ 2 =(1 - iPhone.x)^ 2 +(2 - iPhone.y)^ 2
40 ^ 2 =(10 - iPhone.x)^ 2 +(2 - iPhone.y)^ 2
所以这些是圆的方程式,你必须在which they're touching计算点。
你会得到两分,而不是一分。
您无法从两个信标中知道确切的位置。
正如评论中提到的那样,你需要三个信标才能做到这一点。
答案 1 :(得分:4)
你做不到。世界上所有的数学都不会改变这样一个事实,即你从信标中获得的RSSI读数会大幅波动并响应你控制之外的许多因素。
你能做的最好的事情就是粗略地说出你附近的信标,以及它们附近的信息。在真实环境中进行测试后,任何比更精确的尝试都会失败。
答案 2 :(得分:0)
我终于得到了一个好结果,以便有人需要解决方案:
我认为p1和p2是两个圆圈的中心。
然后我计算了两个中心之间的距离(两点距离公式),如下所示:double dx = (b.x-a.x);
double dy = (b.y-a.y);
double dist = sqrt(dx*dx + dy*dy);
然后我找到了一个基本公式,将近似精度限制在两点之间的距离(p1,p2)
double l = dist / (dA + dB);
现在我有两个已知中心的圆圈,并根据精度和极限计算半径
float r1 = l * dA;
float r2 = l * dB;
现在有两个圆已知中心,半径在单点交叉,这是移动的位置。