【发布时间】:2016-03-07 22:36:31
【问题描述】:
过去几天一直忙于计算和公式,我开始失去理智(有点)。所以现在我向你们寻求一些见解/帮助。
这是问题;我正在使用蓝牙信标,它们被放置在建筑物的整个楼层中,以制作室内 GPS 展示。您可以使用手机连接这些信标,从而从它们那里接收您的经度和纬度位置。这些数字是大浮点/双精度变量,如下所示:
- 纬度:52.501288451787076
- lng: 6.079107635606511
实际变化发生在该点之后的第 4 位和第 5 位。我正在使用将这些数字转换为笛卡尔坐标系;
- x = R * cos(lat) * cos(lon)
- z = r * sin(lat)
现在这个转换得到的坐标是实心的。它们是我可以使用的数字。我在 3d 引擎 (Unity3d) 中使用它们来制作实时地图,您可以在其中看到有人在哪里行走。
现在为实际问题!这些信标并不完全准确。即使您放下手机,这些数字也会上下“跳跃”。范围从,让我们假设与上述相同的纬度,52.501280 到 52.501296。如果我们将其转换并将其用作 3d 引擎中的坐标,则用户的“头像”会从一个位置跳到另一个位置(小跳多于大跳)。
应对这些跳跃数字的好方法是什么?我试图检查大跳跃并忽略那些,但跳跃仍然太大。更广泛的检查将导致几乎没有移动,即使手机正在移动。或者有没有更好的方法来转换 lat 和 long 变量以用于 3d 引擎?
如果有人和我有同样的问题,一些数学奇才可以给出一个好的转换/公式,或者知道我可能做错了什么,那么请帮助其他程序员。
【问题讨论】:
-
不知道我对问题的理解是否正确...你可以考虑Moving Average。
-
多么有趣的问题。对@Shnugo的建议很大的是的。我认为您可以通过使用统一的 Input.acceleration 或 Input.gyro.userAcceleration 进一步完善您的运动。后者是我使用的,它运行良好(我需要先通过 Android 上的代码启用它)。因此,如果您打算进行硬核,您可以检查每帧的陀螺仪加速度...... mm......可能 1. 平均加速度和移动平均算法,或者 2. 使用加速度作为后者的系数。但同样,我认为移动平均线会很好。
-
我一定会试一试移动平均线。使用加速是我想过但从未真正尝试过的事情。谢谢你的输入。 span>
标签: c# unity3d bluetooth positioning cartesian-coordinates