四元数的方向向量?

Nic*_*ros 7 3d vector rotation quaternions

我有一个四元数代表3D字符上臂的旋转.我还有一条线应该代表角色手臂的新位置.该线位置由两个3D点给出.

这是我拥有的唯一数据,我试图调用3D包(数字符文)中的方法,该方法采用2个方向向量并返回表示将手臂移动到新位置所需的旋转的四元数.

问题是我看到了一些奇怪的行为,就好像轴混合在一起而且通常没有表现.此外,代表3D人员手臂的Quaternion对象(来自3D包)具有W,X,Y和Z.X,Y和Z是否代表方向向量?因为这就是我需要正确调用函数.我一直在使用它和我计算出的方向向量来自我的线端点,但正如我所说的看起来很有趣.

如果X,Y和Z不是方向向量,如何从四元数转换为两个端点,那么我可以计算方向向量?

com*_*orm 8

在您的上下文中(以及在大多数计算机图形上下文中),四元数用于表示旋转.你不想直接使用X,Y和Z; 相反(如上面链接的教程中所述),您可以使用它来生成旋转矩阵.然后,您应该像任何其他3D变换矩阵一样使用旋转矩阵 ; 它将围绕原点旋转点,如它所来自的四元数所描述的那样.

四元数的X,Y和Z确实表示旋转的轴,但四元数也以非特别直接的方式编码旋转的幅度.如果你的包中包含返回四元数的函数,它还应该包含将其四元数转换为旋转矩阵的函数; 如果可能的话,你应该使用打包的函数(因为它应该使用与生成它们的方法相同的约定).

在阅读了四元数和转换矩阵后,您应该仔细阅读相关函数的文档,以确保提供正确的参数,并确保以正确的方式使用结果(即使你熟悉数学,它也很容易搞砸了......).