CGAffineTransform的定義中只有6個數據,可為什么背后的矩陣有第三列,且是固定值 0, 0, 1
struct CGAffineTransform {
CGFloat a, b, c, d;
CGFloat tx, ty;
};
CGAffineTransform實際上是通過矩陣來計算的,而矩陣背后的數學就是矩陣的相乘.
坐標的矩陣公式
坐標的計算
如果第三列去掉,公式和結果是沒有什么影響的,那為什么還要第三列呢?
去掉第三列
但是如果多種平移和縮放的矩陣相結合,那就不一樣了,如果同樣是3行2列的矩陣,就無法相乘,為了能夠使不同的transform矩陣相乘,那就需要第三列,把他們都變成3*3矩陣來計算,本來第三列的數值就沒什么用,那就給個固定值0,0,1。