7

我正在编写一个 Android AR 应用程序并让我的引擎工作,但它包含一个我似乎无法修复的奇怪行为。我在相机图像上覆盖了一个 OpenGL 表面,并相应地将 3D 对象放置在视图中。如果我使用虚拟数据作为我的 AR 对象的位置,即 LAT 10 LON 10 在 OpenGL 表面上变为 x=10 y=10,则叠加效果完美。但是,如果我对我的 LAT 和 LON 使用直接 GPS 坐标(例如 LAT 12.34567890 LON 100.23456789),那么我所有的对象要么在它们的位置周围移动,要么根本不出现。我知道使用浮点和 OpenGL 框架存在问题,但我一直在阅读,但仍然无法停止这种行为。有没有其他人有这个问题?我应该在我的 GPS 和 openGL 表面之间使用比例因子吗?如果是这样,什么价值观是好的?我尝试将我的 LAT 和 LON 缩放 1000000 以消除浮点数,但这并没有帮助,而且性能也很糟糕。

我非常接近这项工作,任何帮助将不胜感激。

4

1 回答 1

1

找出你的原始坐标在哪个 1x1 或 0.5x0.5 度的“盒子”中,然后减去那个盒子,所以你的坐标现在是相对于“盒子”而不是整个世界的。

所以 LAT 12.34567890 LON 100.23456789 在方框 (12,100) 中,坐标为 (0.34567890, 0.23456789)。您需要将 (0.34567890, 0.23456789) 传递给 OpenGL。

从 +/-180.0 度范围内的浮点数获​​得约 1m 的精度充其量是有点粗略,一旦你开始执行所有 OpenGL 的矩阵运算,事情就会开始非常糟糕地抖动。

于 2010-02-03T17:13:05.790 回答