Spa*_*Dog 3 iphone iphone-sdk-3.0
如果我有一个矩形UIImageView的原始变换矩阵并且这个图像被缩放和旋转,并且到最后我可以读取同一视图的最终变换矩阵,我如何计算图像缩放和旋转的程度?
我想这些矩阵不知何故包含这两个信息.问题是如何提取它......
任何线索?
谢谢你的帮助.
一点矩阵代数和三角恒等式可以帮助您解决这个问题.
我们将继续生成一个可以缩放和旋转的矩阵,然后使用它来计算出如何分析地提取比例因子和旋转.
由Sx(在X轴上)和Sy(在Y轴上)缩放的缩放矩阵如下所示:
?Sx 0 ?
?0 Sy?
Run Code Online (Sandbox Code Playgroud)
R弧度顺时针旋转的矩阵如下所示:
?cos(R) sin(R)?
?-sin(R) cos(R)?
Run Code Online (Sandbox Code Playgroud)
使用标准矩阵乘法,组合缩放和旋转矩阵将如下所示:
?Sx.cos(R) Sx.sin(R)?
?-Sy.sin(R) Sy.cos(R)?
Run Code Online (Sandbox Code Playgroud)
请注意,线性变换也可能包括剪切或其他变换,但我会假设这个问题只发生了旋转和缩放(如果剪切变换在矩阵中,那么跟随代数会产生不一致的结果;但是可以使用相同的方法来确定分析解决方案).
甲CGAffineTransform具有四个成员A,B,C,d,对应于2维矩阵:
?a b?
?c d?
Run Code Online (Sandbox Code Playgroud)
现在我们想从这个矩阵中提取Sx,Sy和R的值.我们可以在这里使用一个简单的三角恒等式:
tan(A) = sin(A) / cos(A)
Run Code Online (Sandbox Code Playgroud)
我们可以使用矩阵的第一行来得出结论:
tan(R) = Sx.sin(R) / Sx.cos(R) = b / a and therefore R = atan(b / a)
Run Code Online (Sandbox Code Playgroud)
现在我们知道R,我们可以使用主对角线提取比例因子:
a = Sx.cos(R) and therefore Sx = a / cos(R)
d = Sy.cos(R) and therefore Sy = d / cos(R)
Run Code Online (Sandbox Code Playgroud)
所以你现在知道Sx,Sy和R.
| 归档时间: |
|
| 查看次数: |
894 次 |
| 最近记录: |