ios - 了解 CATransform3D 围绕所有三个轴的旋转

标签 ios macos catransform3d

我想围绕三个轴旋转 View ,具有 3 个不同的角度:rx、ry、rz。

这是我做的:

_tx = CATransform3DMakeRotation(rx*M_PI/360, 1, 0, 0);
_ty = CATransform3DMakeRotation(ry*M_PI/360, 0, 1, 0);
_tz = CATransform3DMakeRotation(rz*M_PI/360, 0, 0, 1);
view.layer.transform = CATransform3DConcat(_tx, CATransform3DConcat(_ty, _tz));

虽然当我尝试反转连接顺序时它正在工作。例如,

view.layer.transform = CATransform3DConcat(_tx, CATransform3DConcat(_ty, _tz));

view.layer.transform = CATransform3DConcat(_tz, CATransform3DConcat(_tx, _ty));

不要给出相同的结果!!

  1. 有没有办法用一个 CATransform3DMakeRotation 绕 3 轴旋转?
  2. 或者更好的方法?

最佳答案

矩阵运算不可交换,改变它们相乘的顺序将得到不同的变换矩阵结果。

您想按什么顺序应用 3 种不同的轮换?这是您应该连接变换矩阵的顺序。

关于ios - 了解 CATransform3D 围绕所有三个轴的旋转,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15141946/

相关文章:

objective-c - 如何在两个 CATransform3D 之间手动插值?

cocoa - Xcode 中的调试/运行停止工作。可执行设置错误且无法修复

python - 加载 MySQLdb 模块时出错 Mountain Lion

ios - 如何从选项卡中的 subview 获取 tabController

ios - 必须在 UIWebview 的 iframe 中使用 Google Maps Embed API

c++ - 编译错误 QT - 无法从类型进行转换

core-animation - CALayer sublayerTransform (CATransform3D) - 如何移动 "camera"?

ios - 在上下文上绘图时在 UIImage 上应用 CATransform3D

ios - 从SQLite提取数据并且只想获取列ID的最后一个值

objective-c - 如何获取数组中 ipodLibrary 中所有歌曲的列表