获取当前航向 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,但背后的数学对于每种编程语言都是相同的。
我正在尝试使用 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,但背后的数学对于每种编程语言都是相同的。