获取四元数以在两个向量之间旋转

7

我有一对向量。如何创建一个四元数,使得它可以将一个向量旋转到另一个向量?


1个回答

12

一个单位四元数q=cos(F)+u*sin(F)表示绕轴u旋转角度2*F的向量v的旋转。

如果你的向量是vw,那么我们应该将它们标准化,然后计算它们之间的夹角,即2*F=ArcCos(Dot(v, w))。旋转轴方向向量u=Normalize(VectorProduct(v, w))。现在我们可以构建所需的旋转四元数。


3
在计算出旋转轴 u 后将其标准化为单位四元数可能是一个好主意,因为两个单位向量的叉积仅在输入向量正交时才被标准化。 - Christian Rau
@Christian Rau 你说得对,我漏掉了这个规范化。已添加。 - MBo
9
注意,当 v = -w 时需要特别处理。 - Gareth Rees

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接