質問

任意の M3 行列変換を一連の単純な変換 (移動、拡大縮小、傾斜、回転など) として再表現できるかどうか (また、可能であればどのようにすればよいか) 疑問に思います。

言い換えると:次の方程式が成り立つように、MComplex から MTranslate、MScale、MRotate、MSkew 行列を計算する方法:

MComplex = MTranslate * MScale * MRotate * MSkew (または他の順序)

役に立ちましたか?

解決

特異値分解 (こちらも参照 このブログ この PDF)。任意の行列を 3 つの行列の組み合わせに変換します。直交+対角+直交。直交行列は回転行列です。対角行列は、主軸に沿った歪み = スケーリングを表します。

変換によってゲームにモンキー レンチが投入されますが、やるべきことは行列の変換部分を取り出して 3x3 の行列を作成し、その行列に対して SVD を実行して回転と傾斜を与え、その後変換部分を元に戻すことです。 。そうすれば、4 つの行列の回転 + スケール + 回転 + 移動の構成が得られます。おそらく 3 つの行列 (回転 + 一連の軸に沿ったスケーリング + 移動) でこれを行うことは可能ですが、正確な方法はわかりません...おそらく QR 分解 (Q = 直交 = 回転ですが、R がスキューのみなのか回転部分があるのか​​はわかりません)。

他のヒント

はい、しかし、解決策は一意ではありません。また、あなたは、むしろ

(残りの順序は重要ではありません)最後に翻訳を置く必要があります

任意の所与の正方行列Aについて無限に多くの行列BCそのA = B*Cように存在します。任意の正則行列のBを選択(B)は^ -1が存在するか、DET(Bことを意味する!= 0)、現在C = B^-1*A

あなたのソリューションは、最初のいくつかの可逆転置行列であることをMTを選択し、MCMTMS*MR*MSk*Iを分解するためのようにします。 MSは、任意のスケーリング行列となるように、そして、MSMR*MSk*Iに残りを分解する。そしてそうで...

楽しいIの終わりに(他の場所で対角線上の1、0の)単位行列である場合は、

今、あなたは良いです。そうでない場合は、;-)やり直すが、異なる行列を選択してください。

実際には、上記の方法を使用すると、象徴、あなたはあなたにこれらの行列のすべてのためのパラメータ化の式が得られる方程式のセットを作成することができます。

どのように便利なこれらの分解がうまく、あなたのためになる - それはまた別の話だ。

。 あなたがのMathematicaのまたはのマキシマのにこれを入力すると、

彼らは時間がないあなたのためにこれを計算します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top