ios開發中的矩陣轉換

來源:互聯網
上載者:User

標籤:

    1. 最近在研究CoreText看了很多的例子其中有很多地方不是特別理解所以上網收集了IOS矩陣的轉換原理來記錄下

       

      CGAffineTransformMake(a,b,c,d,tx,ty) 

      ad縮放bc旋轉tx,ty位移,基礎的2D矩陣

       公式

          x=ax+cy+tx
          y=bx+dy+ty

       

      1.矩陣的基本知識:

      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|

       

      運算原理:原座標設為(X,Y,1);

                                  |a    b    0|

             [X,Y,  1]      |c    d    0|     =     [aX + cY + tx   bX + dY + ty  1] ;

                                  |tx    ty  1|

      通過矩陣運算後的座標[aX + cY + tx   bX + dY + ty  1],我們對比一下可知:

      第一種:設a=d=1, b=c=0.  

      [aX + cY + tx   bX + dY + ty  1] = [X  + tx  Y + ty  1];

      可見,這個時候,座標是按照向量(tx,ty)進行平移,其實這也就是函數

      CGAffineTransform CGAffineMakeTranslation(CGFloat tx,CGFloat ty)的計算原理。

      第二種:設b=c=tx=ty=0.  

      [aX + cY + tx   bX + dY + ty  1] = [aX    dY   1];

      可見,這個時候,座標X按照a進行縮放,Y按照d進行縮放,a,d就是X,Y的比例係數,其實這也就是函數

      CGAffineTransform CGAffineTransformMakeScale(CGFloat sx, CGFloat sy)的計算原理。a對應於sx,d對應於sy。

      第三種:設tx=ty=0,a=cos?,b=sin?,c=-sin?,d=cos?。

      [aX + cY + tx   bX + dY + ty  1] = [Xcos? - Ysin?    Xsin? + Ycos?  1] ;

      可見,這個時候,?就是旋轉的角度,逆時針為正,順時針為負。其實這也就是函數

      CGAffineTransform CGAffineTransformMakeRotation(CGFloat angle)的計算原理。angle即?的弧度表示。

ios開發中的矩陣轉換

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.