【问题标题】:Replacing sequence of SVG transforms with a single transformation matrix用单个变换矩阵替换 SVG 变换序列
【发布时间】:2013-11-15 00:57:26
【问题描述】:

我是否正确假设任何 SVG 变换序列 T1...Tn 可以被单个通用变换替换,其矩阵是通过将矩阵 M1 * ... * Mn 相乘获得的,其中 Mi 对应于变换 Ti?

我之所以问,是因为我试图用一个单一的替换下面的转换序列:

  • 刻度(1,y)
  • 翻译(0,最大值)
  • 比例(1,-1)

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

【问题讨论】:

    标签: matrix svg transformation


    【解决方案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]
    

    或 (1,0,0,0,-y,-m) 以 svg 表示法

    【讨论】:

    • 啊,谢谢!所以基本上我做对了,除了乘法顺序。
    • 其实我认为如果你反过来你应该得到 (1,0,0,0,-y,y*max)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-10
    • 2021-03-24
    • 1970-01-01
    相关资源
    最近更新 更多