为什么变换顺序在Xcode中很重要?

cha*_*pkr 1 xcode core-animation transform

这两个序列在​​应用此变换的图像层中给出两个不同的结果.我似乎没有理由......有人可以给出解释吗?

/* first sequence of transformation */
CGAffineTransform transform = CGAffineTransformIdentity;
transform = CGAffineTransformRotate(transform, M_PI / 180 * 30);
transform = CGAffineTransformTranslate(transform, 100, 0);

/* second sequence of transformation */
CGAffineTransform transform = CGAffineTransformIdentity;
transform = CGAffineTransformTranslate(transform, 100, 0);
transform = CGAffineTransformRotate(transform, M_PI / 180 * 30);
Run Code Online (Sandbox Code Playgroud)

Dav*_*ist 7

简短(技术性)答案:因为变换实际上只是一个矩阵,当你连接两个变换时,两个矩阵相乘.矩阵乘法不是可交换的,意味着A(A B)与⨉(B A)不同.换句话说,订单很重要.

我之前写过关于组合翻译和旋转以及变换背后的数学(即进入矩阵数学)的文章.如果您想了解有关变换如何工作的更多信息,这两个资源可能是很好的资源.

Richard TurtonGitHub上还有一个很好的项目,用于试验变换,这对于掌握不同变换的顺序如何影响最终结果的概念非常有用.