2017-03-09 46 views
0

我想从德尔福拉德10.1柏林从Android设备检索我目前的标题。获取当前标题德尔福多设备

根据Embarcadero知识库,OrientationSensor中有一个功能是真正的标题,但只有在Windows上才能启用。

所以,我认为要做到这一点,我需要将下列变量转换为一个标题。

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

正如我只需要标题(和不关心高度),我相信我可以不顾Z.

在回报我需要检索当前标题应该是从0-360。

我使用的公式我在网上找到这就是: -

angle = atan2(Y, X); 

这似乎有所帮助,但在某些位置非常不准确,并且是别人负。

任何帮助或建议,将不胜感激。

一些细节,可以帮助有:

这是在Delphi中多设备应用。

它只在Android设备上(也只在其上进行测试)。

在此先感谢。

+0

FWIW,atan2预计对某些投入为负值。那有什么问题?如果您认为这是不合理的,那么在继续之前,您需要退后一步并更好地掌握基本触发。不要试图在无知状态下解决问题。了解任何可能的解决方案。这种没有思想文化的复制粘贴对你没有任何好处。 –

+0

嗨,大卫,因为我需要以度为度数,所以对于我需要的东西应该是积极的,我很欣赏你的意思,并且我会第一个举起手来承认我在trig时很糟糕,因此我已经转向互联网寻求帮助,这并不意味着在诉诸它之前没有三四天的痛苦。 –

+0

-30与330相同,与-390相同。标题是周期性的。想想这是什么意思。 –

回答

0

不要丢弃HeadingZ

这些树标题不是相对于世界表面而是相对于您的设备方向和倾斜。

所以为了获得真正的标题,你必须考虑所有三轴的标题以及所有三轴的倾斜信息。

你可以阅读有关计算航向这里的更多信息:https://stackoverflow.com/a/1055051/3636228

是挂钩的答案是目标C,但数学的背后,是同样为每一个编程语言。

+0

感谢这个银,标记这是正确的。 –