改变手性'行主要4x4变换矩阵

时间:2015-05-14 10:25:08

标签: math matrix transformation

我有转换和旋转坐标数据,采用Row-major 4x4转换矩阵格式。

Ux Vx Wx Tx    
Uy Vy Wy Ty    
Uz Vz Wz Tz    
0  0  0  1

我需要将数据源和软件发送到不同的手动坐标系统。一个是左撇子,另一个是右手。

如何从右到左更改矩阵,反之亦然? 我知道对于变换你只能反转Y轴,但是对于旋转它似乎更复杂。

感谢。

1 个答案:

答案 0 :(得分:2)

通过翻转Y轴可以在两个坐标系之间转换矢量。这相当于乘以矩阵:

F = [ 1  0  0  0 ]
    [ 0 -1  0  0 ]
    [ 0  0  1  0 ]
    [ 0  0  0  1 ]

要在翻转的坐标空间中应用变换,可以翻转Y轴,应用变换,然后再次翻转Y轴以返回原始坐标空间。写成矩阵乘法,如下所示:

F*(M*(F*x))                [1]

(其中M是你的矩阵)。好的,但这很浪费 - 现在我们有三个矩阵乘法而不是一个;幸运的是,矩阵乘法是关联的,所以我们重写:

F*(M*(F*x)) = (FMF)*x

我们只需要计算矩阵FMF。通过对角矩阵的左乘法通过对角线上的对应元素缩放另一矩阵的行;右乘法缩放列。所以我们需要做的就是否定第二行和第二行:

FMF = [ Ux -Vx  Wx  Tx ]
      [-Uy  Vy -Wy -Ty ]
      [ Uz -Vz  Wz  Tz ]
      [  0   0   0   1 ]

从您的评论中,您可能实际上并不想转换回原始坐标系,在这种情况下,您可以简单地使用矩阵MF而不是FMF。

[1]更一般地说,进行变换,然后进行一些操作,然后撤消变换称为 conjugation ,它通常具有FMF ^ -1的形式。碰巧我们的矩阵F是它自己的逆。