我发现了一个关于仅获得旋转的类似问题,但据我所知,缩放和旋转在变换矩阵中的工作方式不同。
矩阵不是我的强项,所以如果有人能提示我如何从CGAffineTransform中获得伸缩,我将不胜感激。
顺便说一句。我尝试在CGSize上应用CGAffineTransform,然后获取height x width来查看它缩放了多少,但是height x width有奇怪的值(取决于CGAffineTransform中的旋转,所以...不起作用的hm )
发布于 2010-04-22 23:44:51
假设转换是缩放,然后是旋转(可能有平移,但没有倾斜),水平缩放因子是sqrt(a^2+c^2)
,垂直缩放因子是sqrt(b^2+d^2)
,水平缩放因子与垂直缩放因子的比率应该是a/d = -c/b
,其中a
、b
、c
和d
是CGAffineTransform
的六个成员中的四个,每个代码(< the documentation >D9和<代码>D10只表示平移,这不会影响缩放因子)。
| a b 0 |
| c d 0 |
| tx ty 1 |
发布于 2013-02-03 00:25:18
- (CGFloat)xscale {
CGAffineTransform t = self.transform;
return sqrt(t.a * t.a + t.c * t.c);
}
- (CGFloat)yscale {
CGAffineTransform t = self.transform;
return sqrt(t.b * t.b + t.d * t.d);
}
发布于 2013-01-14 18:19:57
这是一个老问题,但我仍然添加了更多的信息,以防有人需要。
对我来说,获取缩放、旋转变换和重现变换的好答案和示例代码来自文章:
https://stackoverflow.com/questions/2690337
复制相似问题