如何从CGaffineTransform中求出标度变换?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (13)

我发现了一个类似的问题,关于只获得旋转,但正如我理解在变换矩阵中缩放和旋转不同的工作。

矩阵不是我的力量,所以如果有人会暗示我如何才能获得CGAffineTransform 的缩放比例,我将不胜感激。

顺便说一句。我尝试在CGSize上应用CGAffineTransform,然后获取高度x宽度以查看其缩放的大小,但高度x宽度具有奇怪的值

提问于
用户回答回答于

假设变换是一个缩放后跟一个旋转(可能在那里有一个平移,但没有歪斜),水平比例因子是sqrt(a^2+c^2),垂直比例因子是sqrt(b^2+d^2),而水平比例因子与垂直比例因子的比率应该是a/d = -c/b其中abc,和d是的六个成员4 CGAffineTransform,每文档txty仅代表翻译,这不影响比例因子)。

|  a  b 0 |
|  c  d 0 |
| tx ty 1 |
用户回答回答于
- (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);
}

扫码关注云+社区