【问题标题】:Tilt location iOS app倾斜定位 iOS 应用
【发布时间】:2023-03-08 23:21:01
【问题描述】:

如何确定 iOS 应用中 y 方向的倾斜位置?首先,我尝试使用加速度计。但即使 iPhone 没有倾斜,加速度计的值也会发生变化。然后我试着玩转陀螺仪。但这只能感知倾斜的速率,而不是倾斜的位置。

这就是我想要做的:

如果您将 iPhone 横向放置在桌面上,并且主页按钮位于顶部。然后你慢慢地继续翻转它,使显示器现在朝下(你看到手机的背面)并且主页按钮仍然在左侧。我正在尝试测量需要的倾斜运动。

【问题讨论】:

    标签: iphone ios core-motion


    【解决方案1】:

    您应该考虑使用 Core Motion API,因为它提供了可用作欧拉角、四元数或旋转速率的值。来看看

    Accelerometer detection and sprite rotation

    iPhone - What does the gyroscope measures? Can I get an absolute degree measurement in all axis?

    iphone - core motion (relative rotation)

    【讨论】:

      【解决方案2】:

      加速度计就是您想要的。如果你的加速度向量是a = (x, y, z),那么这个向量和三个轴的夹角由下式给出:

      cos (angleXaxis) = x / sqrt(x^2 + y^2 + z^2)
      
      cos (angleYaxis) = y / sqrt(x^2 + y^2 + z^2)
      
      cos (angleZaxis) = z / sqrt(x^2 + y^2 + z^2)
      

      要获得角度本身,您需要使用反 cos 函数。

      【讨论】:

      • 所有这些都是打印出 x、y 和 z 分量。当然,在我的问题中,如果我说即使 iPhone 没有倾斜,加速度计的值也会发生变化,我已经看到了 x、y 和 z 值。
      • 在我的问题中,我准确地解释了我想要的倾斜度。是的,我想这个角度会很有用。但该教程并未涵盖这一点。
      • 怎么样?我做了以下事情: float distanceFactor = sqrt((xxxx) + (yyyy) + (zz*zz));浮动 ax = acos ( xx / distanceFactor );浮动 ay = acos ( yy / distanceFactor );浮动 az = acos ( zz / distanceFactor);其中 xx、yy 和 zz 是加速度计值。但是当我按照我说的方式倾斜手机时,ax 和 az 角度都发生了变化......
      • 多少?一个人应该比其他人改变更多。您没有进行精确的运动,因此变化超出您的预期是有道理的。
      • 当我开始倾斜运动并继续直到手机垂直于桌子时,x 角从 1.5 变为 0,z 角从 3 变为 1.5
      猜你喜欢
      • 1970-01-01
      • 2020-07-29
      • 1970-01-01
      • 2019-12-15
      • 1970-01-01
      • 2016-02-03
      • 1970-01-01
      • 1970-01-01
      • 2023-03-23
      相关资源
      最近更新 更多