Умножение CSSMatrix - PullRequest
       14

Умножение CSSMatrix

1 голос
/ 19 сентября 2011

Согласно документации WebKitCSSMatrix , функция multiply () "возвращает результат умножения этой матрицы на заданную матрицу справа."Так что

a.multiply(b) должно быть равно a b в математической записи.

Но, похоже, a.multiply(b) действительно равно b a;результат равен произведению, когда данная матрица слева.

Например:

Пусть a:

 2, -2,  5,  0
-1,  0, 12,  0
 3,  1, -2,  0
 0,  0,  0,  1

иB:

 1,  4,  3,  0
 3,  1,  5,  0
 3,  4,  3,  0
 0,  0,  0,  1

При использовании этого инструмента произведение a b равно

c = a b:

11, 26, 11,  0
35, 44, 33,  0
0,   5,  8,  0
0,   0,  0,  1

В JavaScript:

a = new WebKitCSSMatrix("matrix3d(2,-2,5,0,  -1,0,12,0,  3,1,-2,0,  0,0,0,1)")
b = new WebKitCSSMatrix("matrix3d(1,4,3,0,  3,1,5,0,  3,4,3,0,  0,0,0,1)");

и a.multiply(b) это:

7,   1,  47,  0
20, -1,  17,  0
11, -3,  57,  0
0,   0,   0,  1

но на самом деле b.multiply(a) это матрица c.

Я что-то упустил?

Ответы [ 2 ]

1 голос
/ 07 августа 2013

Вы правы в своих наблюдениях, но спецификация также верна в своем описании. Вы должны заметить, что матрицы, определенные в спецификации CSS, являются основными столбцами, где, как и большинство книг по математике, будут работать с матрицами в формате основных строк. Попробуйте преобразовать его и посмотрите, что получится.

1 голос
/ 09 июня 2012

Матричное умножение равно «, как правило, не коммутативно », что означает, что a.multiply (b) обычно не будет таким же, как b.multiply (a).

...