我有转换和旋转坐标数据,采用Row-major 4x4转换矩阵格式。
Ux Vx Wx Tx
Uy Vy Wy Ty
Uz Vz Wz Tz
0 0 0 1
我需要将数据源和软件发送到不同的手动坐标系统。一个是左撇子,另一个是右手。
如何从右到左更改矩阵,反之亦然? 我知道对于变换你只能反转Y轴,但是对于旋转它似乎更复杂。
感谢。
答案 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是它自己的逆。