如何通过将 CATransform3D 结构作为输入来计算围绕 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)
关于iPhoneSDK从CATransform3D计算旋转角度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3565383/