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



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

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

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.html)为了将矩阵拆分为translationscalerotationskew,我将这些值记录在一个新的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"网页,他们是一样的,网页演示可以得到我期望的正确的图像姿势结果。

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

矩阵连接顺序为:

Local = Translate * Rotate * Skew * Scale

我尝试了其他的连接顺序,比如T * R * Sc * Sk,但仍然不能得到正确的结果。

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

感谢家人!我解决了!偏斜变换是错误的,顺序应该是平移*旋转*缩放*偏斜

相关内容

  • 没有找到相关文章

最新更新