我是否正确假设任何 SVG 变换序列 T1...Tn 可以被单个通用变换替换,其矩阵是通过将矩阵 M1 * ... * Mn 相乘获得的,其中 Mi 对应于变换 Ti?
我问是因为我试图用一个单一的替换下面的转换序列:
- 规模 (1, y)
- 翻译(0,最大)
- 规模 (1, -1)
如果我的假设是正确的,这将与矩阵 (1, 0, 0, -y, 0, y*max) 变换相同,对吗?
我是否正确假设任何 SVG 变换序列 T1...Tn 可以被单个通用变换替换,其矩阵是通过将矩阵 M1 * ... * Mn 相乘获得的,其中 Mi 对应于变换 Ti?
我问是因为我试图用一个单一的替换下面的转换序列:
如果我的假设是正确的,这将与矩阵 (1, 0, 0, -y, 0, y*max) 变换相同,对吗?
是的,将它们相乘是正确的想法,但是您需要确保使用线性代数中的矩阵乘法将完整的 3x3仿射变换矩阵相乘,并且您必须确保顺序正确,即,从第一个转换开始,您必须将矩阵从右到左放置。
所以正确的矩阵乘法是
[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]
或 (1,0,0,0,-y,-m) 以 svg 表示法