iphone - CMAttitude 和 CATransform3D 是否与旋转矩阵相关?

标签 iphone ios matrix core-motion catransform3d

我正在查看核心运动类 CMAttitude,它可以将设备的方向表示为 3x3 旋转矩阵。同时,我查看了 CATransform3D,它封装了 View 的姿态以及缩放。 CATransform3D 是一个 4x4 矩阵。

我已经看到 OpenGL 旋转矩阵是 4x4,并且只是在第 4 行和第 4 列中填充了 0001。

我想知道 CMAttitude 的旋转矩阵是否与 CATransform 的矩阵相关?

我可以使用通过旋转矩阵获得的设备在空间中的旋转来使用 CATransform3D 转换 UIView 吗?我的意图是让用户移动手机并将相同的转换应用于屏幕上的 UIView。

奖励问题:如果它们相关,我如何将 CMAttitude 的旋转矩阵转换为 CATransform3D?

最佳答案

陀螺仪用于确定设备在空间中的方向。有很多方法可以参数化方向本身(有关理论信息,请参阅有关 SO(3) 组的信息)- 四元数、欧拉角和 3x3 矩阵就是其中之一。

将 3x3 矩阵“嵌入”到 4x4 矩阵中并不是 GL 特有的技巧。这是一个 "semi-direct product"平移组(与所有 3D 向量同构)和旋转组(上面提到的 SO(3))。

要从 CMAttitude 获取 CATransform3D 矩阵,您必须假设对象的某个位置。如果它是零,那么就像你说的那样用 0001 填充矩阵。

您可能会对这个问题感兴趣:Apple gyroscope sample code

关于iphone - CMAttitude 和 CATransform3D 是否与旋转矩阵相关?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10854099/

相关文章:

matrix - 使用 jblas 的数组索引越界异常

iPhone。当一根手指触摸屏幕时检测另一根手指触摸

iphone - 向 UIDatePicker 添加按钮

iphone - 如何调整 rightBarButtonItems 中两个 UIBarButtonItem 之间的间距

matrix - 如何将 Julia 图(通过 Plots.jl)转换为 Matrix{RGB{N0f8}}

c++ - 使用 c++ 为大至 1000 x 1000 的矩阵实现 8-连通性的连通分量标记

iphone - 在 UITableViewCell ala Twitterrific for iPhone 中设置文本格式并绘制文本

ios - UIWebView 和 WKWebView 导航

iOS Swift Realm 同步问题

ios - 如何在 AutoLayout 中模拟条件拥抱优先级?