我正在尝试使用Delphi Rad 10.1 Berlin从Android设备中检索我当前的标题。
OrientationSensor中有一个函数是True Heading,但是,根据Embarcadero知识库,这只在Windows上启用。
所以,我认为要这样做,我需要将以下变量转换为一个标题。
OrientationSensor1.Sensor.HeadingX
OrientationSensor1.Sensor.HeadingY
OrientationSensor1.Sensor.HeadingZ
由于我只需要前进(并且不关心海拔高度),我相信我可以无视Z.
作为回报,我需要检索当前标题,该标题应该是0-360。
我使用了我在网上找到的公式: -
angle = atan2(Y, X);
这似乎有所帮助,但在某些职位上却非常不准确,而在其他职位则是否定的。
任何帮助或建议都将不胜感激。
可能有用的一些细节是:
这是Delphi中的多设备应用程序。
它仅适用于Android设备(并且仅在其上进行测试)。
提前致谢。
答案 0 :(得分:0)
不要丢弃HeadingZ
。
这些树标题与世界表面无关,而是与您的设备方向和倾斜度相关。
因此,为了获得真正的航向,您必须考虑所有三个轴的航向以及所有三个轴的倾斜信息。
您可以在此处阅读有关计算标题的更多信息:https://stackoverflow.com/a/1055051/3636228
是链接的答案是针对目标C的,但是对于每种编程语言,数学背后都是相同的。