如何从LH 4x4世界矩阵中获取位置和x / y / z轴?

时间:2011-12-08 23:56:27

标签: math matrix direct3d

据我所知,Direct3D可以使用LH坐标系吗?

那么我如何从LH 4x4(世界)矩阵中获取位置和x / y / z轴(局部定向轴)?

感谢。

如果你不知道:LH代表左撇子

1 个答案:

答案 0 :(得分:1)

如果4x4矩阵是我认为的(一个均匀的刚体变换矩阵,与SE(3)的元素相同)那么它应该很容易得到你想要的。任何刚体变换都可以用形式为

的4x4矩阵表示
g_ab = [ R, p;
         0, 1]

以块矩阵表示法。 ab下标表示转换将采用框架b中表示的点的坐标,并将告诉您框架a中表示的坐标是什么。 R这里是一个3x3旋转矩阵,p是一个向量,当旋转矩阵为单位(无旋转)时,它会告诉你ba中的原点坐标}}。但是,通常会出现旋转,因此您必须执行以下操作。

矩阵描述的坐标系的位置将通过将变换应用于点(0,0,0)来给出。这将很好地指出点所在的世界坐标。诀窍在于,当处理SE(3)时,你必须在点的末尾添加1,在向量的末尾添加0,这使得它们成为长度为4而不是长度为3的向量,因此可以通过矩阵!因此,要将局部坐标系中的点(0,0,0)转换为世界框架,您需要将矩阵(我们称之为g_SA)乘以向量(0,0,0,1)。要获得向量(x,y,z)的世界坐标,可以将矩阵乘以(x,y,z,0)。您可以将其视为因为向量是点的差异,因此最后一个元素中的1会消失。因此,例如,要在世界坐标中找到局部x轴的表示,可以乘以g_SA *(1,0,0,0)。要找到y轴,请执行g_SA *(0,1,0,0),依此类推。

我所见过的最好的地方(以及我从中学到的地方)是A Mathematical Introduction to Robotic Manipulation by Murray, Li and Sastry,你感兴趣的章节是2.3.1。