zoukankan      html  css  js  c++  java
  • CGAffineTransform 原理

    参考:http://guxiaojje.blog.163.com/blog/static/14094229120131510359399/

    http://www.buildapp.net/iphone/show.asp?id=10192

    矩阵的基本知识:

    struct CGAffineTransform

    {
      CGFloat a, b, c, d;
      CGFloat tx, ty;
    };

    CGAffineTransform CGAffineTransformMake (CGFloat a,CGFloat b,CGFloat c,CGFloat d,CGFloat tx,CGFloat ty);

    为了把二维图形的变化统一在一个坐标系里,引入了齐次坐标的概念,即把一个图形用一个三维矩阵表示,其中第三列总是(0,0,1),用来作为坐标系的标准。所以所有的变化都由前两列完成。

    以上参数在矩阵中的表示为:

     |a    b    0|

     |c    d    0|

     |tx   ty   1|

    The identity transform: [ 1 0 0 1 0 0 ].

    CG_EXTERN const CGAffineTransform CGAffineTransformIdentity

    /* 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)

    /* Return a transform which translates by `(tx, ty)':  t' = [ 1 0 0 1 tx ty ]  控制位移*/

    CG_EXTERN CGAffineTransform CGAffineTransformMakeTranslation(CGFloat tx, CGFloat ty)

    /* Return a transform which scales by `(sx, sy)':  t' = [ sx 0 0 sy 0 0 ]   控制缩放*/

     CG_EXTERN CGAffineTransform CGAffineTransformMakeScale(CGFloat sx, CGFloat sy)

    /* 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)

    =====================

    简单记忆:

    在使用矩阵控制图片的缩放和旋转的时候,CGAffineTransformMake(a,b,c,d,tx,ty);
    这几个参数里面,哪些是控制缩放,哪些是控制旋转:
    a,d缩放;
    b,c旋转;
    tx,ty位移。
     
    基础的2D矩阵,文档里有。
  • 相关阅读:
    springboot集成flowable oracle数据库版本报错
    Vue.js中this.$nextTick()的使用
    Centos下虚拟环境的创建以及python3安装
    SaltStack实战
    第一章 Jenkins安装配置
    JavaScript 常用正则表达式
    ps 掉出字符设备面板,修改颜色等
    博客验证码破解
    我终于想起密码了~
    Linux grep 命令
  • 原文地址:https://www.cnblogs.com/bunsman/p/3142587.html
Copyright © 2011-2022 走看看