【问题标题】:Direction vector from Quaternion?四元数的方向向量?
【发布时间】:2012-01-26 12:21:17
【问题描述】:

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

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

问题是我看到了一些奇怪的行为,好像轴被混淆了,而且它通常不正常。此外,代表 3D 家伙手臂的四元数对象(来自 3D 包)具有 W、X、Y 和 Z。X、Y 和 Z 是否代表方向向量?因为这就是我需要正确调用该函数的原因。我一直在使用它以及从我的线端点计算出的方向向量,但正如我所说,它看起来很有趣。

如果 X、Y 和 Z 不是方向向量,如何将四元数转换为两个端点,以便计算方向向量?

【问题讨论】:

标签: vector 3d rotation quaternions


【解决方案1】:

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

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

阅读完四元数和变换矩阵后,您应该仔细阅读相关函数的文档,以确保您提供了正确类型的参数,并确保您使用的是正确的方法(即使您熟悉数学,也很容易搞砸......)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-03-30
    • 2022-10-16
    • 1970-01-01
    • 2013-02-03
    • 1970-01-01
    • 2019-02-24
    • 2012-06-11
    相关资源
    最近更新 更多