Algorithm 合并多个变换矩阵

Algorithm 合并多个变换矩阵,algorithm,math,pseudocode,Algorithm,Math,Pseudocode,我正在尝试开发一个基于手势的转换功能 我只是对通过自己的轴心点合并许多变换矩阵感到困惑 实际上,我正在尝试使用以下函数: matrix4x4 transform(matrix4x4 prevMatrix, vector3 pivot, vector3 deltaTranslation, float deltaRotation, float deltaScale){ 'magic is here.. } 'First call var temp = transform(identity,

我正在尝试开发一个基于手势的转换功能

我只是对通过自己的轴心点合并许多变换矩阵感到困惑

实际上,我正在尝试使用以下函数:

matrix4x4 transform(matrix4x4 prevMatrix, vector3 pivot, vector3 deltaTranslation, float deltaRotation, float deltaScale){
     'magic is here..
}
'First call
var temp = transform(identity, (.5,.5,0), (0.1,0.2), 0.1, 105deg);
renderCanvas(temp);
'Second call
temp = transform(temp, (0, 0), (-1, 2), -.8, 120deg);
renderCanvas(temp);
当我在画布上应用矩阵变换(第一次调用)时,它可以工作,因为之前没有旋转或缩放

但对于第二个调用,由于旋转,平移看起来在错误的轴上(例如,向右滑动,但看到画布平移到底部)


那么,有什么解决办法吗?或者我应该更清楚一点吗?

看起来你把这两个矩阵按错误的顺序组合起来了。矩阵乘法不是可交换的。是的,亨利,我想是的。你有什么建议吗?我应该从prevMatrix中提取平移、旋转和缩放值,然后重新创建矩阵吗?如果你说
magic在这里..
你基本上有一个矩阵乘法,比如a.B;就做B.A。