如何分解二维变换矩阵以及如何将它们合成回来

问题描述

我正在写一些矢量形状变换演示,我被卡住了:

一个从某种形状得到的变换矩阵数据:

matrix = [3.23891,-0.87126,246.73324,1.07431,0.86589,169.21047,1]

然后我使用 decomposeMatrix 方法(来自此处:https://frederic-wang.fr/decomposition-of-2d-transform-matrices.html)将矩阵拆分为 translation,scale,rotation,{{1 }} ,我将这些值记录在一个新的 skew 类中,当我刷新画布时,这个 shape 实例将调用一个方法来通过这些姿势值计算其局部矩阵,我认为它会返回与之前分解的矩阵几乎相同的矩阵,但不是。

从矩阵中我得到了数据:

shape

我将这些数据与“https://frederic-wang.fr/decomposition-of-2d-transform-matrices.html”网页进行了比较,它们是相同的,并且网页演示可以得到正确的图像姿势结果我预料到了。

所以我想也许我的矩阵乘法方法错误的?

矩阵连接顺序是:

rotation: 0.32026899072894127
scale: {x: 3.412432386032404,y: 1.0961547154147515}
skew: {x: -0.16104628632010806,y: 0}
translation: {x: 246.73324584960938,y: 169.21047973632812}

我尝试了其他 concat 命令,例如 Local = Translate * Rotate * Skew * Scale ,但我仍然无法得到正确的结果。

亲爱的家人,你能帮我解决这个问题吗?比心!

解决方法

谢谢家人!我解决了! skew 变换错误,顺序应该是 Translate * Rotate * Scale * Skew

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...