Question

Je me demande s'il est possible (et si elle est alors comment) pour re-présente une transformation de matrice M3 arbitraire comme une séquence de transformations simples (tels que traduire, échelle, inclinaison, rotation)

En d'autres termes: comment calculer mTranslate, MScale, MRotate, matrices MSkew de la MComplex de telle sorte que l'équation suivante serait vrai:

MComplex = mTranslate * MScale * * MRotate MSkew (ou dans un autre ordre)

Était-ce utile?

La solution

Valeur de décomposition de Singular (voir aussi ce blog et ce PDF ). Il transforme une matrice arbitraire dans une composition de 3 matrices: orthogonal + + diagonale orthogonale. Les matrices sont des matrices orthogonales rotation; la matrice diagonale représente l'inclinaison le long des axes principaux = mise à l'échelle.

La traduction jette une clé de singe dans le jeu, mais ce que vous devez faire est de prendre la partie de la traduction de la matrice de sorte que vous avez une matrice 3x3, exécutez SVD sur cela pour vous donner la rotation + biaiser, puis ajouter la traduction une partie avant. de cette façon, vous aurez une rotation + échelle + rotation + traduisez composition de 4 matrices. Il est sans doute possible de le faire en 3 matrices (rotation + mise à l'échelle le long de certains ensemble d'axes + traduction) mais je ne sais pas exactement comment ... peut-être une décomposition QR (Q = orthogonal = rotation, mais je ne suis pas sûr R est obliquité seule ou présente une partie en rotation.)

Autres conseils

Oui, mais la solution ne sera pas unique. Aussi, vous devriez plutôt mettre fin à la traduction (de l'ordre du reste n'a pas d'importance)

Pour toute matrice carrée donnée A il existe une infinité de matrices B et C pour que A = B*C. Choisissez une matrice inversible B (ce qui signifie que B ^ -1 existe ou det (B)! = 0) et maintenant C = B^-1*A.

Donc, pour votre première solution se décompose en MC MT et MS*MR*MSk*I, en choisissant MT être une matrice de transposition inversible. Puis décomposer le reste en MS et MR*MSk*I de telle sorte que MS est la matrice de mise à l'échelle arbitraire. Et ainsi de suite ...

Maintenant, si à la fin de la I plaisir est une matrice d'identité (avec 1 sur la diagonale, 0 ailleurs) vous êtes bien. Dans le cas contraire, recommencer, mais choisir différentes matrices ;-)

En fait, selon la méthode ci-dessus, vous pouvez symboliquement créer ensemble d'équations qui vous donneront une formule paramétrées pour toutes ces matrices.

Comment ces décompositions utiles seraient pour vous, bien -. Qui est une autre histoire

Si vous tapez ceci dans Mathematica ou Maxima ils vont calculer pour vous en peu de temps.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top