vector - 四元数的方向向量?

标签 vector 3d rotation quaternions

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

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

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

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

最佳答案

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

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

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

关于vector - 四元数的方向向量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8610994/

相关文章:

c++ - 读取 std::cin 的流迭代器错过了第二个和第三个数字

c++ Vector在类中声明为私有(private)但具有get函数

ios - 陀螺仪旋转数据和设备运动旋转数据有什么区别?

R Shiny Plotly 3D : Change the title of x , y , z 轴到实际变量名称并添加图例标题

javascript - ThreeJScamera.lookAt()没有效果,我做错了什么吗?

c++ - 偏航、俯仰和滚动到 glm::rotate

java - 向右旋转二维矩阵

c++ - 在类中使用 vector

c++ - 对 vector 的引用在回退后是否会重新定位?如果是,如何?

macos - OpenGL 纹理单元的范围是什么?