线性代数坐标系统转换

时间:2017-12-12 09:21:55

标签: c++ image-processing linear-algebra point-clouds

矩阵变换非常简单,但我可以在网上得到任何适当的解释。

我有一个3D云点数据,每个位置都有位置向量[x,y,z]和法向量n=[a,b,c]。现在我想将它转换为不同的坐标系,将特定点作为原点[0,0,0],将其法线向量作为Z axis,然后将两个随机不同的正交向量作为其他轴。为此,我只假设一个正交向量为T=[0, -n[2], n[1]],然后对此进行归一化。为了获得另一个正交向量,我只是将其与正常b= n.cross(t)

交叉

现在我想用这个坐标系来映射其他点和法线。

据我所知,法向量可以使用变换矩阵

放入这个新的坐标系
tx ty tz 0
bx by bz 0
nx ny nz 0
0  0  0  1

现在只需将法线向量相乘即可进入新的坐标系。normals in new coordinate sytem=T*n 但我不明白如何将其他点的位置矢量映射到这个新的坐标系中。?

1 个答案:

答案 0 :(得分:0)

正如你所描述的那样,你的变换是相对于原点的纯旋转,因此点和法线将变换相同;也就是说,你可以为两者使用相同的矩阵。

请注意,对于一般的可逆仿射映射x -> Lx+t,如果要保留正交性,则法线将转换为n -> normalize(transpose(inverse(L)) n)(但是,根据转换的性质,这可能不够。 ..)。