質問

入力としてcatransform3D structを与えることにより、z軸周辺のラジアンの回転を計算するにはどうすればよいですか?

基本的に私が必要とするのは、の逆のラウンドです CATransform3DMakeRotation.

役に立ちましたか?

解決

それはあなたがどの軸をしているのかによって異なります。

Z軸に関する回転は、次のように表されます。

a  = angle in radians
x' = x*cos.a - y*sin.a
y' = x*sin.a + y*cos.a
z' = z

( cos.a  sin.a  0  0)
(-sin.a  cos.a  0  0)
( 0        0    1  0)
( 0        0    0  1)

したがって、角度はそうあるべきです a = atan2(transform.m12、transform.m11);

X軸についての回転:

a  = angle in radians
y' = y*cos.a - z*sin.a
z' = y*sin.a + z*cos.a
x' = x

(1    0      0    0)
(0  cos.a  sin.a  0)
(0 -sin.a  cos.a  0)
(0    0     0     1)

Y軸についての回転:

a  = angle in radians
z' = z*cos.a - x*sin.a
x' = z*sin.a + x*cos.a
y' = y

(cos.a  0  -sin.a   0)
(0      1    0      0)
(sin.a  0  cos.a    0)
(0      0    0      1) 

他のヒント

変換がレイヤーに取り付けられている場合、次のように回転の値を取得できます。

CGFloat angle = [(NSNumber *)[layer valueForKeyPath:@"transform.rotation.z"] floatValue];

から ドキュメンテーション:

Core Animationは、キー値のコーディングプロトコルを拡張して、キーパスを介してレイヤーのCatransForm3Dマトリックスの共通値を取得して設定できるようにします。表4は、レイヤーの変換とsublayertransformのプロパティがキー価値のコーディングと準拠の観察である重要なパスを示しています

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top