2009-07-24 16 views
8

Ciekawe, jeśli jest to możliwe (i, jeśli jest to w jaki sposób) w celu ponownego obecny dowolnej transformacji matrycy M3 sekwencji prostszych przemian (jak tłumaczyć skali, pochylanie, obracanie)Rozłożyć złożoną transformację macierzy na serię prostych transformacji?

Innymi słowy jak obliczyć MTranslate, MScale, MRotate, MSkew matryce z MComplex tak, że następujące równanie byłoby prawdziwe:

MComplex = MTranslate * MScale * MRotate * MSkew (lub w innej kolejności)

Odpowiedz

9

Singular Value Decomposition (patrz także this blog i ten PDF). Obraca dowolną macierz w skład 3 macierzy: ortogonalnej + przekątnej + ortogonalnej. Macierze ortogonalne są macierzami rotacyjnymi; macierz diagonalna przedstawia pochylenie wzdłuż osi początkowych = skalowanie.

Tłumaczenie rzuca w grę klucz do gry małpy, ale powinieneś wyjąć część tłumaczenia z macierzy, aby mieć matrycę 3x3, uruchomić SVD, aby dać rotację + pochylenie, a następnie dodać tłumaczenie z powrotem. W ten sposób będziesz miał rotację + skalę + obrót + przetłumacz skład 4 macierzy. Prawdopodobnie można to zrobić w 3 macierzach (obrót + skalowanie wzdłuż jakiegoś zbioru osi + tłumaczenie), ale nie jestem do końca pewien jak ... może rozkład QR (Q = ortogonalny = obrót, ale nie jestem pewien czy R jest tylko pochyleniem lub ma część obrotową.)

1

Tak, ale rozwiązanie nie będzie wyjątkowe. Ponadto należy raczej umieścić tłumaczenie na końcu (kolejność reszta nie ma znaczenia)

Dla każdej macierzy kwadratowej A istnieje nieskończenie wiele macierze B i C więc tym A = B*C. Wybierz dowolną odwracalną matrycę B (co oznacza, że ​​istnieje B^-1 lub det (B)! = 0), a teraz C = B^-1*A.

Więc dla twojego rozwiązania najpierw rozłącz MC na MT i MS*MR*MSk*I, wybierając MT jako jakąś odwracalną macierz transpozycji. Następnie rozpakuj resztę na MS i MR*MSk*I, aby MS było dowolną macierzą skalowania. I tak dalej ...

Teraz, gdy na końcu zabawy I jest matrycą tożsamości (z 1 na przekątnej, 0 gdzie indziej) jesteś dobry. Jeśli tak nie jest, zacznij od nowa, ale wybierz inną macierz ;-)

W rzeczywistości, używając powyższej metody, możesz utworzyć zestaw równań, które dadzą ci sparametryzowane formuły dla wszystkich tych macierzy.

Jak przydatne będą te dekompozycje dla Ciebie, cóż - to już inna historia.

Jeśli wpiszesz to pod Mathematica lub Maxima oni obliczyć to dla ciebie w krótkim czasie.

+0

Masz dobry punkt, z tym wyjątkiem, że macierze te mają dodatkowe wiązania (translacja jest macierzą tożsamości z prawą kolumną zawierającą wektor translacji itp.). O ile mogę sobie wyobrazić, te cztery transformacje - przy założeniu, że porządek jest stały - powinny przynieść jednoznaczny wynik. – samuil