让我们假设,隐藏在森林里,有一个灯塔。我乘坐直升飞机飞过森林,并随意间隔着灯塔。对于每次ping,我得到一个lat / lng对和该点(但没有方向)的信标信号强度。
如何在PHP中计算信标的位置?
如果稍后我会再读一遍,我如何将其添加到我目前估计的灯塔位置?
注意:我们不知道森林如何影响信号强度,但我们可以假设效果是均匀的 - 信标可能在一片空地上,或埋在石头下面。
答案 0 :(得分:1)
我假设您正在获得ping的经度和纬度。
您需要至少4个ping,在2 X 2平方网格中(尽可能接近此值)。更多ping可能会有所帮助,但您将不得不处理测量错误。
这是一个糟糕的Ascii绘图,具有强度值。假设北方正在上升。
X (6 strength) X (4 strength)
.
.
.
X (5 strength) X (3 strength)
根本不做任何数学计算,你可以确定信标位于你进行这些测量的中心西北方的某个地方。
如果您可以通过信号强度(大约)计算距离,那么您可以猜测地图上的某个位置。
如果你无法计算距离,只需在另外一个2 x 2方格的网格上划线即可。在某些时候,优势将接近相等,你可以假设信标靠近广场的中心。
我希望这对直升飞机有帮助并且不会太费时。
编辑添加:信标的信号强度与距离的平方成反比。 (distance = sqrt(x factor / signal strength))
我们假设您已经确定了x因子(12)
,因此您知道信号强度为9表示地图上的半径为1.1英寸的圆,并且信号强度为3表示地图上一个2.0英寸半径的圆圈。
因此,当您在左下方获得ping时,可以将ping放在地图上,并绘制一个半径为1.5英寸的圆。当您在左上角获得ping时,可以将ping放在地图上,并绘制一个半径为1.4英寸的圆。
现在,这两个圆圈将在地图上的某个位置相交。在那个十字路口的某个地方将是信标的位置。
现在直升机转过身来,你就会在右上角看到ping。您绘制一个半径为1.7英寸的圆。然后你得到右下角的ping,然后你 画一个半径为2英寸的圆圈。
四个圆圈的交点应构成一个小的粗四边形。
你飞到四边形的中心,然后另一个ping。你应该获得相当高的信号强度。拉下绳子,找到灯塔和搁浅的徒步旅行者,回到绳子上,让直升机将你和滞留的徒步旅行者拉到安全地带。