На самом деле есть способ сделать то, что вы пытаетесь сделать, используя только фильтр преобразования матрицы.
в дополнение к M11, M12, M21, M22, матрица также имеет два дополнительных свойства: Dx и Dy для перевода.К сожалению, вы не можете просто перевести на постоянную сумму.Для того, чтобы вращаться вокруг центра объекта, вам нужно составить три преобразования.
Сначала переведите центр объекта в начало координат.Во-вторых, поверните объект.В-третьих, переведите из источника обратно туда, где находится центр.
IE не может сам составить несколько матриц, поэтому вам придется самостоятельно выполнять линейную алгебру.Предположим, что тета - это угол, на который вы хотите повернуть, и предположим, что ширина объекта равна 2w, а высота - 2h.(Таким образом, w и h - ПОЛОВИНА ширины и высоты соответственно.) Пусть c и s означают cos (theta) и sin (theta) соответственно.
Матричный продукт, который вы хотите вычислить, будет:
[[1 0 w] [[c -s 0] [[1 0 -w]
[0 1 h] [s c 0] [0 1 -h]
[0 0 1]] [0 0 1]] [0 0 1]]
, что равно:
[[ c -s (-wc + hs + w)]
[ s c (-ws - hc + h)]
[ 0 0 1 ]]
Итак, если вы вычислите две величины (-wc + hs + w) и (-ws -hc + h) и добавите их в свой фильтр какDx и Dy соответственно, конечным результатом будет то, что вращение происходит вокруг центра объекта.
Я закодировал это и протестировал для проекта, в котором мне нужно было анимировать вращение объекта вокруг его центра, и это сработало для меня.