CGAffineTransform矩陣中第三列

CGAffineTransform的定義中只有6個數據,可為什么背后的矩陣有第三列,且是固定值 0, 0, 1

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

CGAffineTransform實際上是通過矩陣來計算的,而矩陣背后的數學就是矩陣的相乘.


坐標的矩陣公式

坐標的計算

如果第三列去掉,公式和結果是沒有什么影響的,那為什么還要第三列呢?


去掉第三列

但是如果多種平移和縮放的矩陣相結合,那就不一樣了,如果同樣是3行2列的矩陣,就無法相乘,為了能夠使不同的transform矩陣相乘,那就需要第三列,把他們都變成3*3矩陣來計算,本來第三列的數值就沒什么用,那就給個固定值0,0,1。

參考:Transforms:The Math Behind the Matrices

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容