初窥 CGAffineTransform 文档解读
- 序言
其实CGAffineTransform
是一个结构体
struct CGAffineTransform {
CGFloat a, b, c, d;
CGFloat tx, ty;
};
博主小手一抖, 初始化成这样:’CGAffineTransform *transform = CGAffineTransformIdentity;’这样Xcode是会报错的,然后查验方法却总是找不到错误,自已一查,妹的!竟然是初始化的时候数据类型有错误。)
**下面步入正题**
CGAffineTransform
- The identity transform: [ 1 0 0 1 0 0 ].
返回单位矩阵
CG_EXTERN const CGAffineTransform CGAffineTransformIdentity CG_AVAILABLE_STARTING(__MAC_10_0, __IPHONE_2_0);
CGAffineTransformMake
- Return the transform [ a b c d tx ty ].
返回矩阵
CG_EXTERN CGAffineTransform CGAffineTransformMake(CGFloat a, CGFloat b, CGFloat c, CGFloat d, CGFloat tx, CGFloat ty) CG_AVAILABLE_STARTING(__MAC_10_0, __IPHONE_2_0);
CGAffineTransformMakeTranslation
- Return a transform which translates by ‘(tx, ty)’:
t = [ 1 0 0 1 tx ty ]. 直接将数值转换成仿射变换
CG_EXTERN CGAffineTransform CGAffineTransformMakeTranslation(CGFloat tx, CGFloat ty) CG_AVAILABLE_STARTING(__MAC_10_0, __IPHONE_2_0);
CGAffineTransformMakeScale
- **Return a transform which scales by ‘(sx, sy)’:
t = [ sx 0 0 sy 0 0 ].** 仿射变换的放缩效果
CG_EXTERN CGAffineTransform CGAffineTransformMakeScale(CGFloat sx, CGFloat sy) CG_AVAILABLE_STARTING(__MAC_10_0, __IPHONE_2_0);
CGAffineTransformMakeRotation
- **Return a transform which rotates by ‘angle’ radians:
t = [ cos(angle) sin(angle) -sin(angle) cos(angle) 0 0 ].** 仿射变换的旋转效果
CG_EXTERN CGAffineTransform CGAffineTransformMakeRotation(CGFloat angle) CG_AVAILABLE_STARTING(__MAC_10_0, __IPHONE_2_0);
CGAffineTransformIsIdentity
- Return true if ‘t’ is the identity transform, false otherwise.
判断是否是单位矩阵
CG_EXTERN bool CGAffineTransformIsIdentity(CGAffineTransform t) CG_AVAILABLE_STARTING(__MAC_10_4, __IPHONE_2_0);
CGAffineTransformTranslate
- **Translate ‘t’ by ‘(tx, ty)’ and return the result:
t = [ 1 0 0 1 tx ty ] * t .** 仿射变换的 矢量运算效果 (动画叠加效果)得到一个矢量
CG_EXTERN CGAffineTransform CGAffineTransformTranslate(CGAffineTransform t, CGFloat tx, CGFloat ty) CG_AVAILABLE_STARTING(__MAC_10_0, __IPHONE_2_0);
CGAffineTransformScale
- **Scale ‘t’ by ‘(sx, sy)’ and return the result:
t’ = [ sx 0 0 sy 0 0 ] * t .** 仿射变换的 矢量运算的 得到一个放缩变换的矢量
CG_EXTERN CGAffineTransform CGAffineTransformScale(CGAffineTransform t, CGFloat sx, CGFloat sy) CG_AVAILABLE_STARTING(__MAC_10_0, __IPHONE_2_0);
CGAffineTransformRotate
- **Rotate ‘t’ by ‘angle’ radians and return the result:
t = [ cos(angle) sin(angle) -sin(angle) cos(angle) 0 0 ] * t .** 矢量运算后的 放缩变换的矢量
CG_EXTERN CGAffineTransform CGAffineTransformRotate(CGAffineTransform t, CGFloat angle) CG_AVAILABLE_STARTING(__MAC_10_0, __IPHONE_2_0);
CGAffineTransformInvert
- **Invert ‘t’ and return the result. If ‘t’ has zero determinant, then ‘t’
is returned unchanged.** 得到一个逆矩阵
CG_EXTERN CGAffineTransform CGAffineTransformInvert(CGAffineTransform t) CG_AVAILABLE_STARTING(__MAC_10_0, __IPHONE_2_0);
CGAffineTransformConcat
- **Concatenate ‘t2’ to ‘t1’ and return the result:
t = t1 * t2.** 合并矢量
CG_EXTERN CGAffineTransform CGAffineTransformConcat(CGAffineTransform t1, CGAffineTransform t2) CG_AVAILABLE_STARTING(__MAC_10_0, __IPHONE_2_0);
CGAffineTransformEqualToTransform
Return true if ‘t1’ and ‘t2’ are equal, false otherwise.
判断俩仿射变换是否相等CG_EXTERN bool CGAffineTransformEqualToTransform(CGAffineTransform t1, CGAffineTransform t2) CG_AVAILABLE_STARTING(__MAC_10_4, __IPHONE_2_0);
CGPointApplyAffineTransform
**Transform ‘point’ by ‘t’ and return the result:
p = p * t.
where: p = [ x y 1 ].**CG_EXTERN CGPoint CGPointApplyAffineTransform(CGPoint point, CGAffineTransform t) CG_AVAILABLE_STARTING(__MAC_10_0, __IPHONE_2_0);
CGSizeApplyAffineTransform
**Transform ‘size’ by ‘t’ and return the result:
s = s * t.
where s = [ width height 0 ].**CG_EXTERN CGSize CGSizeApplyAffineTransform(CGSize size, CGAffineTransform t) CG_AVAILABLE_STARTING(__MAC_10_0, __IPHONE_2_0);
CGRectApplyAffineTransform
**Transform ‘rect’ by ‘t’ and return the result. Since affine transforms do
not preserve rectangles in general, this function returns the smallest
rectangle which contains the transformed corner points of ‘rect’. If ‘t’
consists solely of scales, flips and translations, then the returned
rectangle coincides with the rectangle constructed from the four
transformed corners.**CG_EXTERN CGRect CGRectApplyAffineTransform(CGRect rect, CGAffineTransform t) CG_AVAILABLE_STARTING(__MAC_10_4, __IPHONE_2_0);