我正在写一些矢量形状变换演示,但我被困住了:
有一个从某种形状获得的变换矩阵数据:
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 )将矩阵拆分为translation
, 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”网页进行了比较,它们是相同的,并且网页演示可以得到我期望的正确图像姿势结果。
所以我认为也许我的矩阵乘法方法是错误的?
矩阵连接顺序为:
Local = Translate * Rotate * Skew * Scale
而且我尝试了其他 concat order ,例如 like T * R * Sc * Sk
,但我仍然无法得到正确的结果。
亲爱的家人,你能帮我解决这个问题吗?比心!