【问题标题】:Getting Current Heading Delphi Multi-Device获取当前标题 Delphi 多设备
【发布时间】:2017-03-09 14:20:14
【问题描述】:

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

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

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

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

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

作为回报,我需要检索当前标题,该标题应为 0-360。

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

angle = atan2(Y, X);

这似乎有帮助,但在某些位置上非常不准确,在其他位置上是负面的。

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

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

这是 Delphi 中的多设备应用程序。

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

提前致谢。

【问题讨论】:

  • FWIW,atan2 预计对于某些输入为负数。那有什么问题呢?如果您认为这是不合理的,那么您需要退后一步,在继续之前更好地掌握基本触发。不要试图在无知的状态下解决问题。了解任何潜在的解决方案。这种没有思想文化的复制粘贴对你没有任何好处。
  • 嗨大卫,因为我需要学位,它应该是我需要它的积极因素,我理解你的意思,我将是第一个举手并承认我的人我的三角肌很糟糕,因此我求助于互联网,这并不意味着在求助之前没有 3 或 4 天的疼痛。
  • -30 与 330 相同,与 -390 相同。标题是周期性的。想想这意味着什么。

标签: android delphi delphi-10.1-berlin


【解决方案1】:

不要丢弃HeadingZ

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-25
    相关资源
    最近更新 更多