3

我想以 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. 有没有办法用一个绕3轴旋转CATransform3DMakeRotation
  2. 或者更好的方法来做到这一点?
4

1 回答 1

8

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

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

于 2013-02-28T18:29:52.273 回答