序言:CGAffineTransform可以完成二维的平移、旋转、缩放变换,其本质都是就是仿射变换。一个任意的仿射变换都能表示为乘以一个矩阵 (线性变换) ,接着再加上一个向量 (平移)。以上三种变换可以归纳为平移 (向量加),旋转 (线性变换),缩放 (线性变换)。
- 先来看一下CGAffineTransform的定义:
struct CGAffineTransform { CGFloat a, b, c, d; CGFloat tx, ty; }; CGAffineTransformMake(CGFloat a, CGFloat b,CGFloat c, CGFloat d, CGFloat tx, CGFloat ty)
对应的矩阵为:
对于一个二维中的点CGFloat(x,y)通过以上矩阵变换得到CGFloat(x‘,y’),过程如下:
-
CGAffineTransformIdentity
同理,对于一个二维中的点CGFloat(x,y)通过以上矩阵变换得到CGFloat(x‘,y’),过程如下:
- CGAffineTransformMakeTranslation(CGFloat tx, CGFloat ty)
同理,对于一个二维中的点CGFloat(x,y)通过以上矩阵变换得到CGFloat(x‘,y’),过程如下:
-
CGAffineTransformMakeScale(CGFloat sx, CGFloat sy)
同理,对于一个二维中的点CGFloat(x,y)通过以上矩阵变换得到CGFloat(x‘,y’),过程如下:
-
CGAffineTransformMakeRotation(CGFloat angle)
同理,对于一个二维中的点CGFloat(x,y)通过以上矩阵变换得到CGFloat(x‘,y’),过程如下:
整理后,说明变换后坐标落于同一个圆上。
以上就是CGAffineTransform仿射变换,参照链接:http://xummer26.com/blog/CGAffineTransform-simple-analysis.html。
- 后面我会再分享一篇关于CATransform3D的文章,CATransform3D是一个可以在3维空间内做变换的4x4的矩阵。