获取当前航向 Delphi Multi-Device

Getting Current Heading Delphi Multi-Device

我正在尝试使用 Delphi Rad 10.1 Berlin 从 android 设备检索当前航向。

根据 Embarcadero 知识库,OrientationSensor 中有一个函数是 True Heading,但是,这仅在 Windows 上启用。

所以,我想这样做,我需要将以下变量转换为一个标题。

OrientationSensor1.Sensor.HeadingX
OrientationSensor1.Sensor.HeadingY
OrientationSensor1.Sensor.HeadingZ

因为我只需要航向(不关心高度),我相信我可以忽略Z。

在 return 中,我需要检索当前航向,该航向应为 0-360。

我使用了在网上找到的公式:-

angle = atan2(Y, X);

这似乎有帮助,但在某些位置上非常不准确,而在其他位置上则不利。

如有任何帮助或建议,我们将不胜感激。

一些可能有帮助的细节是:

这是 Delphi 中的一个 Multi-Device 应用程序。

它只在 Android 台设备上运行(并且也只在这些设备上进行测试)。

提前致谢。

不要丢弃 HeadingZ

这些树的标题与世界表面无关,而是与您的设备方向和倾斜度相关。

因此,为了获得真正的航向,您必须考虑所有三个轴的航向以及所有三个轴的倾斜信息。

您可以在此处阅读有关计算航向的更多信息:https://whosebug.com/a/1055051/3636228

是的,链接答案适用于 Objective C,但背后的数学对于每种编程语言都是相同的。