gpt4 book ai didi

iphone - 根据 UIImageView 的变换矩阵获取其旋转和大小

转载 作者:行者123 更新时间:2023-12-03 19:32:51 24 4
gpt4 key购买 nike

如果我有一个矩形 UIImageView 的原始变换矩阵,并且该图像被缩放和旋转,最后我可以读取该同一 View 的最终变换矩阵,我如何计算图像缩放和旋转的程度?

我认为这些矩阵以某种方式包含这两个信息。问题是如何提取它...

有什么线索吗?

感谢您的帮助。

最佳答案

一点矩阵代数和三角恒等式可以帮助您解决这个问题。

我们将努力生成一个可缩放和旋转的矩阵,然后使用它来找出如何通过分析提取比例因子和旋转。

按 Sx(在 X 轴)和 Sy(在 Y 轴)缩放的缩放矩阵如下所示:

⎡Sx  0 ⎤
⎣0 Sy⎦

顺时针旋转 R 弧度的矩阵如下所示:

⎡cos(R)   sin(R)⎤
⎣-sin(R) cos(R)⎦

使用标准矩阵乘法,组合的缩放和旋转矩阵将如下所示:

⎡Sx.cos(R)   Sx.sin(R)⎤
⎣-Sy.sin(R) Sy.cos(R)⎦

请注意,线性变换还可能包括剪切或其他变换,但对于这个问题,我假设仅发生了旋转和缩放(如果矩阵中存在剪切变换,则遵循此处的代数将得到不一致的结果;但可以使用相同的方法来确定解析解)。

一个CGAffineTransform有四个成员a、b、c、d,对应二维矩阵:

⎡a  b⎤
⎣c d⎦

现在我们要从该矩阵中提取 Sx、Sy 和 R 的值。我们可以在此处使用简单的三角恒等式:

tan(A) = sin(A) / cos(A)

我们可以将其与矩阵的第一行结合起来得出结论:

tan(R) = Sx.sin(R) / Sx.cos(R) = b / a    and therefore    R = atan(b / a)

现在我们知道了 R,我们可以使用主对角线提取比例因子:

a = Sx.cos(R)    and therefore    Sx = a / cos(R)
d = Sy.cos(R) and therefore Sy = d / cos(R)

所以你现在知道了 Sx、Sy 和 R。

关于iphone - 根据 UIImageView 的变换矩阵获取其旋转和大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1379811/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com