CGAffineTransform:将缩放应用于翻译,如何?

时间:2012-05-28 22:56:19

标签: core-animation cgaffinetransform affinetransform

仿射变换Apple使用“scale”定义为“不影响翻译”

这在我看来是完全错误的,并且与我对正常仿射变换的期望不一致(其中规模乘以翻译会影响翻译),并且使得处理现实世界的问题非常困难,其中“缩放”预计会扩展整个坐标系统,而不仅仅是单个对象的局部协作。

Apple的库中是否有一种安全的方法可以解决这个问题(即“缩放”适用于整个矩阵,而不仅仅是非翻译部分)?

或者我犯了一个愚蠢的错误并完全误解了扩展所发生的事情,不知何故?

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

阿。尴尬。我的错误:对concat的争论是错误的方式!至少我可以把它留在这里,并希望帮助下一个人犯这样一个愚蠢的错误。

  1. 我用错误的方式调用了一个Concat调用;显然,“翻译”“规模”按预期工作 - 规模不会影响翻译!

  2. 当我搜索这个问题时,我打了几页,谈到CGAffineTransform进行规模化和独立翻译。确认偏见:(我读过并认为这是真的。多哈。

  3. 仅供参考:CGAffineTransformConcat(A,B)......确实:矩阵A *矩阵B ......即“A的效果首先,然后是B的效果”

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