You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CGAffineTransform变换拼接顺序:为何与常规矩阵变换逻辑不同?

关于CGAffineTransform的变换顺序误区

刚接触CGAffineTransform的时候,很多人都会在变换顺序上踩坑,我来给你理清楚这里的核心差异:

  • 常规线性代数中的点变换逻辑:
    当对单个点批量应用一系列变换时,变换序列的指定顺序要和预期操作顺序相反。比如你想先对点x做平移(记为变换矩阵T),再做旋转(记为变换矩阵R),那最终的拼接矩阵得是RT,变换公式为(RT)x——矩阵从左到右作用,实际执行顺序是先右边的平移T,再左边的旋转R。

  • CGAffineTransform的特殊实现:
    但Apple的CGAffineTransform采用了上述表达式的转置版本,它并不是以Ax(A为变换矩阵)的形式变换点,而是用xA的形式来计算。

举个实际的例子更清楚:
还是先平移再旋转的需求,在CGAffineTransform里,你需要先创建平移变换,再通过CGAffineTransformRotate把旋转变换拼接上去,最终的变换矩阵等价于TR,变换时的计算是x(TR)——这就完全贴合我们直观的操作顺序:先执行平移,再执行旋转,不用再反过来记矩阵顺序了。

内容的提问来源于stack exchange,提问作者Jans

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 06:50:52