旋转矩阵、归一化、行列式-1

Rotation matrix, normalization, determinant -1

我目前正在根据一篇科学论文实现 3D 点云过滤算法。

我运行在计算特定值的旋转矩阵时的一些问题。目标是将点旋转到由法向量方向(Z 轴)定义的坐标系中。由于以下查询在 X、Y 轴上是旋转对称的,因此这些轴的方向无关紧要。 R定义如下:Rotationmatrix

    [1      1  -(nx+ny)/nz]
R = [  (row1 x row3)'     ]
    [nx      ny      nz   ]

n 被归一化。当 n_z 变得非常小或为零时,就会出现问题。因此,我考虑在计算第 2 行的叉积之前对第 1 行进行归一化。

然而行列式变为-1。旋转矩阵会导致正确的结果吗? R 是正交的,但 det|R|不是 +1

感谢任何建议

您对绕任意轴旋转点感兴趣吗?如果是,也许 quaternions 是很好的解决方案。 如果你想在实际使用之前将四元数转换为矩阵,你可以检查 this

你总能明白

det(a, a×b, b) = - det( a, b, a×b) 
= - dot(a×b, a×b) 

总是负数。因此,您需要通过取反或重新排列行的整体顺序来更改第二行。