最近几天一直在做计算和公式,我开始失去理智(有点)。所以现在我向你们寻求一些见解/帮助。
这就是问题所在;我正在使用蓝牙信标,它们被放置在建筑物的整个楼层,以制作室内 GPS 展示。您可以使用手机连接这些信标,从而从它们那里接收您的经度和纬度位置。这些数字是大浮点/双精度变量,如下所示:
- 纬度:52.501288451787076
- 液化天然气:6.079107635606511
实际变化发生在该点之后的第 4 位和第 5 位。我正在使用将这些数字转换为笛卡尔坐标系;
- x = R * cos(lat) * cos(lon)
- z = R *sin(lat)
现在这个转换的坐标是固体的。它们是我可以使用的数字。我在 3d 引擎 (Unity3d) 中使用它们来制作实时地图,您可以在其中看到有人在哪里行走。
现在解决实际问题!这些信标并不完全准确。即使您放下手机,这些数字也会上下“跳跃”。范围从,让我们假设与上述相同的纬度,52.501280 到 52.501296。如果我们将其转换并将其用作 3d 引擎中的坐标,则用户的“头像”会从一个位置跳到另一个位置(小跳多于大跳)。
应对这些跳跃数字的好方法是什么?我试图检查大跳跃并忽略那些,但跳跃仍然太大。更广泛的检查将导致几乎没有移动,即使手机正在移动。或者有没有更好的方法来转换 lat 和 long 变量以用于 3d 引擎?
如果有人和我有同样的问题,一些数学上的奇迹谁能给出一个好的转换/公式,或者知道我可能做错了什么的人,请帮助其他程序员。