6

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

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

如果 CMAttitude 的旋转矩阵与 CATransform 的矩阵有关,我在徘徊?

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

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

4

1 回答 1

4

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

将 3x3 矩阵“嵌入”到 4x4 矩阵中并不是 GL 特有的技巧。它是平移组(与所有 3D 向量同构)和旋转组(上面提到的 SO(3))的“半直接乘积” 。

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

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

于 2012-06-01T17:37:15.480 回答