了解所有三个轴周围的CATransform3D旋转

时间:2013-02-28 17:33:12

标签: ios macos catransform3d

我想围绕三个轴旋转一个视图,有三个不同的角度: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. 有没有办法围绕3轴旋转一个CATransform3DMakeRotation
  2. 或者更好的方法吗?

1 个答案:

答案 0 :(得分:7)

矩阵运算不可交换,改变将它们相乘的顺序将为您提供不同的结果变换矩阵。

您想以哪种顺序应用3种不同的旋转?这是你应该连接转换矩阵的顺序。