gpt4 book ai didi

iPhone - 了解 iPhone 旋转

转载 作者:行者123 更新时间:2023-12-03 18:14:48 24 4
gpt4 key购买 nike

我正在用头撞墙试图理解这一点。请参阅下一张图片。

假设我有一部 iPhone 放在 table 上。此时,通过核心运动的旋转读数对于偏航、滚转和俯仰为 0,0,0(图 A)。

然后我将其旋转 90 度。现在它位于 table 上,左侧是主页按钮,右侧是主页按钮。现在它显示为 0,0,0(图 B)。

现在我将其偏转 180 度。现在它的右侧放在 table 上。主页按钮在左侧。现在读数为 180,0,0(图 C)。

如果我现在滚动就会出现问题。假设我将其滚动-45 度。我应该读 180,-45,0 但我读的是 180,-45,180??? (图D)。

这是为什么呢?如果我从未改变过,为什么它会给我一个推介值(value)?其他角度的旋转如何影响俯仰?谢谢。

enter image description here

最佳答案

考虑到您可以接受增量运动的情况,您可以使用“四元数差”运算。假设您之前有一个名为 q1 的四元数旋转,当前的旋转为 q2。然后您可以计算它们之间的 delta dQ,使得 q2 = q1*dQ 有效。您所要做的就是构建 q1 的逆 (q1^(-1)),然后您将得到:

dQ = q1^(-1) * q2

如果 deviceMotionInterval 足够高,您总是可以使用方便的小欧拉角,而没有任何 90° 奇点或其他野兽般的东西。此解决方案的可能缺点可能是由于错误传播和缺乏来自虚拟空间的反馈而导致的轻微漂移。示例:如果您将 iPhone 放在显示立方体的 table 上,然后进行一系列旋转,则当您将手机放回起始位置时,您可能会发现立方体发生角度位移。

[编辑:忘记了某些部分]为了消除漂移效应,您“只”需要一种方法来将最后一个对象的真实位置(q1)表示为四元数,即屏幕上显示的应用程序中的坐标。如果您使用像 Unity 这样的工具,它可能只是读取对象的适当属性。如果您无法轻松访问它,您可以手动跟踪此位置。

如果您想了解更多相关信息,请查看 3D math primer for graphics and game development, by Fletcher Dunn,Ian Parberry第 168 页。

关于iPhone - 了解 iPhone 旋转,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5170010/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com