我想根据地板的方向旋转三维点云。我已经检测到地板并计算出它的法向量。我想使用这个法向量来确保地板上的所有点都具有相同的y值。
由于两个归一化向量的点积是它们之间角度的余弦,我首先归一化当前法向向量(0.856、0.958、2.58)以及所需的法向矢量(0.0、0.958和0.0)。点积=0.917,因此角度=70.586,但在三维中,这似乎没有用。我需要做两次旋转吗?如果是,有没有关于最佳方法的建议?
如果您想要一个将法向量A
转换为所需法向量A'
的旋转,那么它们的数量是无限的。(给定一个这样的旋转,你可以应用它,然后用围绕A'
的旋转来合成它,以获得许多其他做同样事情的旋转。)
一种在三维中很好地工作的方法是计算叉积向量V = A x A'
(其垂直于包含A
和A'
的平面),然后围绕V
旋转A
和A'
之间的角度。(首先测试A
和A'
尚未重合是很重要的。)
这里有一个关于如何相当有效地完成这一切的描述。