已知某个形状的点集合,需要在某个坐标系下面(view、layer)绘图,绘图之后需要对这个形状进行缩放(放大、缩小)、平移、旋转操作,这时就需要用到CGAffineTransform来进行仿射变换。
CGAffineTransform 原理
根据学过的矩阵变换知识,对于三维坐标系下的一个坐标点(x,y,z),可以使用一个三维矩阵来进行变化来任意操作(x,y,z)。
类似的,对于二维坐标系,也可以使用一个3x3矩阵来调整x,y的值,而通过调整x,y可以实现二维形状的平移缩放和移动。整个transform过程就是一个对x,y调整的过程,比如要实现向上平移a,向下平移b,只需把图形对于的坐标(x,y)变成(x+a,y+b)。
下面是CGAffineTransform内部仿射变换矩阵:
可以通过下面的公式来调整x,y的内容: