iphonesdk从catransform3d计算旋转角度
-
01-10-2019 - |
题
如何通过将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属性的关键路径是键值编码和观察符合符合性的标准
不隶属于 StackOverflow