用单个变换矩阵替换SVG变换序列

时间:2013-11-04 11:53:45

标签: matrix svg transformation

我假设任何SVG变换序列T1 ... Tn可以用单个泛型变换代替,其矩阵是通过乘以矩阵M1 * ... * Mn得到的,其中Mi对应于变换Ti?

我问,因为我试图用一个替换下面的变换序列:

  • 比例(1,y)
  • 翻译(0,最大)
  • scale(1,-1)

如果我的假设是正确的,这将与矩阵(1,0,0,-y,0,y * max)变换相同,是否正确?

1 个答案:

答案 0 :(得分:1)

是的,你已经把它们相乘得到了正确的想法,但你需要确保你使用线性代数的矩阵乘法乘以完整的3x3 affine transformation matrices,你必须确保顺序是正确的方法,即从第一次转换开始,你必须把矩阵从右到左

所以正确的矩阵乘法是

[1  0 0][1 0 0][1 0 0]     [1  0  0]
[0 -1 0][0 1 m][0 y 0]  =  [0 -y -m]
[0  0 1][0 0 1][0 0 1]     [0  0  1]
svg表示法中的

或(1,0,0,0,-y,-m)