3

rx、ry、rz の 3 つの異なる角度で、3 つの軸を中心にビューを回転させたいと考えています。

これが私がやったことです:

_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. 1つで3軸を中心に回転させる方法はありCATransform3DMakeRotationますか?
  2. または、これを行うより良い方法はありますか?
4

1 に答える 1

8

行列演算は可換ではありません。それらを乗算する順序を変更すると、異なる結果の変換行列が得られます。

3 つの異なるローテーションをどの順序で適用しますか? これは、変換行列を連結する順序です。

于 2013-02-28T18:29:52.273 に答える