ベクトル形状の変換デモを書いていますが、行き詰まっています:
いくつかの形状から得られた変換行列データがあります:
matrix = [3.23891, -0.87126, 246.73324, 1.07431, 0.86589, 169.21047, 0, 0, 1]
次に、decomposeMatrix
メソッド (ここから来ます: https://frederic-wang.fr/decomposition-of-2d-transform-matrices.htmltranslation
) を使用して、行列を, scale
,rotation
に分割します。skew
これらの値を新しいshape
クラスに記録します。 、キャンバスを更新すると、このshape
インスタンスは、これらのポーズ値を介してローカル マトリックスを計算するメソッドを呼び出します。前に分解されたマトリックスとほぼ同じマトリックスを返すと思っていましたが、そうではありませんでした。
マトリックスからデータを取得しました:
rotation: 0.32026899072894127
scale: {x: 3.412432386032404, y: 1.0961547154147515}
skew: {x: -0.16104628632010806, y: 0}
translation: {x: 246.73324584960938, y: 169.21047973632812}
これらのデータを "https://frederic-wang.fr/decomposition-of-2d-transform-matrices.html" Web ページと比較しましたが、それらは同じであり、Web ページのデモは期待どおりの正しい画像ポーズ結果を得ることができます。
それで、私の行列乗算方法が間違っていたのではないかと思いましたか?
行列の連結順序は次のとおりです。
Local = Translate * Rotate * Skew * Scale
そして、 などの他の連結順序を試しT * R * Sc * Sk
ましたが、それでも正しい結果が得られません。
親愛なる家族、この問題を解決するのを手伝ってくれませんか? 比心!