0

Apple 使用的仿射变换将“比例”定义为“不影响翻译”

在我看来,这完全错误,并且与我对正常仿射变换的期望不符(其中比例乘以平移确实会影响平移),并且使得处理现实世界的问题变得极其困难,其中“缩放”预计将缩放整个坐标系,而不仅仅是一次单个对象的局部坐标。

Apple 的库中是否有解决此问题的安全方法(即使“比例”适用于整个矩阵,而不仅仅是非翻译部分)?

还是我犯了一个愚蠢的错误,完全误解了缩放发生了什么,不知何故?

4

2 回答 2

1

我很确定这只是意味着它不会影响矩阵中的翻译值。CGAffineTransform 不是某种特殊的数学品牌,它只是一个常规的变换矩阵。它与您曾经使用过的任何其他转换矩阵一样工作。

于 2012-05-28T23:09:45.417 回答
0

啊。尴尬。我的错误: concat 的论点是错误的!至少我可以把它留在这里,希望能帮助下一个人犯下这样一个愚蠢的错误。

  1. 我以错误的方式进行了 Concat 调用;显然,“翻译”“比例”按预期工作 - 比例不会影响翻译!

  2. 当我在谷歌上搜索这个问题时,我找到了几个关于 CGAffineTransform 进行缩放和独立翻译的页面。确认偏差:(我读到了,并认为这是真的。Doh。

仅供参考: CGAffineTransformConcat( A, B ) ... 执行: Matrix A * Matrix B ... 即“首先是 A 的效果,然后是 B 的效果”

因此,请确保您的缩放矩阵是第二个参数(如果您有一系列嵌套的 Concat 调用,则为“稍后”参数)。

于 2012-05-28T23:35:29.207 回答