Разложить сложное матричное преобразование на серию простых преобразований?

Интересно, возможно ли (и если это тогда как) повторно представить произвольное преобразование матрицы M3 как последовательность более простых преобразований (таких как перевод, масштабирование, наклон, поворот)

Другими словами: как рассчитать матрицы MTranslate, MScale, MRotate, MSkew из MComplex, чтобы следующее уравнение было верным:

MComplex = MTranslate * MScale * MRotate * MSkew (или в другом порядке)


person Sergey Ilinsky    schedule 24.07.2009    source источник


Ответы (2)


Разложение по сингулярным значениям (см. также этот блог и этот PDF). Он превращает произвольную матрицу в композицию из 3-х матриц: ортогональных + диагональных + ортогональных. Ортогональные матрицы - это матрицы вращения; диагональная матрица представляет собой перекос по первичным осям = масштабирование.

Перевод бросает в игру гаечный ключ, но что вам нужно сделать, так это вынуть часть трансляции из матрицы, чтобы у вас была матрица 3x3, запустить SVD на ней, чтобы получить вращение + перекос, затем снова добавить часть перевода в Таким образом у вас будет вращение + масштаб + вращение + трансляция композиции из 4-х матриц. Вероятно, можно сделать это в 3-х матрицах (вращение + масштабирование по некоторому набору осей + перенос), но я не уверен, как именно ... возможно, QR-разложение (Q = ортогональное = вращение, но я не уверен, что R имеет только перекос или вращающуюся часть.)

person Jason S    schedule 24.07.2009

Да, но решение не будет уникальным. Также лучше поставить перевод в конце (порядок остальных не имеет значения)

Для любой данной квадратной матрицы A существует бесконечно много матриц B и C, так что A = B*C. Выберите любую обратимую матрицу B (что означает, что B ^ -1 существует или det (B)! = 0) и теперь C = B^-1*A.

Итак, для вашего решения сначала разложите MC на MT и MS*MR*MSk*I, выбрав MT как некоторую обратимую матрицу транспонирования. Затем разложите остальные на MS и MR*MSk*I, чтобы MS была произвольной масштабирующей матрицей. И так далее...

Теперь, если в конце забавы I стоит единичная матрица (с 1 по диагонали, 0 в другом месте), все в порядке. Если это не так, начните сначала, но выберите другие матрицы ;-)

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

Насколько полезны были бы для вас эти разложения, ну это уже другая история.

Если вы введете это в Mathematica или Maxima, они вычислят это за вас в кратчайшие сроки.

person Marcin    schedule 24.07.2009
comment
У вас есть хороший аргумент, за исключением того, что эти матрицы имеют дополнительные связи (преобразование - это единичная матрица с крайним правым столбцом, содержащим вектор перевода, и т. Д.). Насколько я могу себе представить, эти четыре преобразования - при фиксированном порядке - должны дать однозначный результат. - person samuil; 24.07.2009