初窥 CGAffineTransform 文档解读

初窥 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);
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值