20

画像をご覧ください。

初期位置 回転後

これはオンラインソースから入手したコードで、オブジェクトを変換します。その上、私は何も理解していませんでした。私は CATransform3D を初めて使用し、それがどのように機能するかを正確に知りたいと思っています。

CATransform3D transform = CATransform3DIdentity;
transform.m34 = 1.0 / -500;
transform = CATransform3DRotate(transform, 45.0f * M_PI / 180.0f, 0, 1, 0.0f);
_bgView.layer.transform = transform;

このコードがどのように実行されたか知りたいですか? なぜ m34 に値を設定したのですか? 私をさらに混乱させるある種のマトリックスであることがわかりました。また、 CATransform3DRotateの引数は何を意味しますか???

私は理解しようとしていますが、それ以上進んでいません。

CATransform3D について深く理解したい。記事、ドキュメント、または自分自身を説明することで助けてください。

どうもありがとう。

4

3 に答える 3

37

見ないと何がわからないm34

2D回転は、回転する角度だけが必要なため、簡単です。次に、回転はZ軸(つまり、画面の外を直接指す軸)の周りで行われます。

3D回転は異なります。角度が必要ですが、回転している軸を知る必要もあります。

CATransform3DRotateあなたはそれに5つのパラメータを与えます...

  1. 回転を適用する変換。
  2. 角度(ラジアン)πラジアン= 180度3、4、および5は、各軸に適用する回転角の量です。

  3. X軸-これは、画面の左側から画面の右側に向かう軸です。

  4. Y軸-これは、画面の上部から画面の下部に向かう軸です。
  5. Z軸-これは、画面から直接手前を指す軸です。

例で適用した回転は次のとおりです...

角度=45度(ラジアンに変換)。X = 0 Y = 1 Z = 0

これは、45度すべてがY軸を中心に回転することを意味します。つまり、中央の線の周りを回転ドアのように回転します。

最後にパラメータ...「1、0、0」がある場合は、パドルボートのパドルのように回転します。「あなたから離れていく。」

最後に、「0、0、1」がある場合、画面上でキャサリンホイールのように回転します。

値を組み合わせて、「0、1、1」を指定して、2つの軸を中心に回転を適用することもできます。

行列のw行は、透視投影です。学校で、ドットを配置してドットから線を引き、それらの線に合わせて遠近法を描くような遠近法の描画を行ったことはありますか?m34値は、そのドットが配置される場所を決定するため、遠近法を提供します。-50のように設定すると、より大きな違いがわかります。

m34の設定は、このポイントのZ軸の値に関連しています。したがって、ポイントは(0、0、-1 / 500)に配置されます

于 2013-01-10T15:49:35.327 に答える
9

値は 3 行目のm344 列目にあり、実際に回転の視点を与える変換の背後にある行列の値です。

ウィキペディアで、行列の乗算の背後にある数学について詳しく読むことができます。

の値についてCATransform3DRotate(...)

  • 最初の引数は、回転する変換です
  • 2 番目は角度 (ラジアン単位)、
  • 他の 3 つの引数は、((x, y, z) ベクトル) の周りを回転する軸です。
于 2013-01-10T15:55:49.383 に答える