四元数的方向向量?

时间:2011-12-22 23:52:57

标签: vector 3d rotation quaternions

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

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

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

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

1 个答案:

答案 0 :(得分:8)

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

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

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