四元数为零且任何向量的本征积不为零,这是一个错误吗?

问题描述 投票:1回答:1

我正在使用Eigen 3.3.7及其四元数对一组向量执行转换。

我需要执行四元数(可能是零四元数)与矢量的乘积。问题在于,当四元数为零四元数(零实数和矢量部分)时,返回的值就是矢量本身。

根据汉密尔顿积定义,我所理解的是,如果四元数是零四元数,则该乘积应返回零矢量。我错了吗?

以下代码段显示了问题,我期望向量sv为全零,但事实并非如此。这是一个错误吗?

Eigen::Quaterniond q{0.0, 0.0, 0.0, 0.0};
Eigen::Vector3d v{1.0, 2.0, 3.0};
auto sv = q * v;

欢呼和感谢。

c++ eigen quaternions
1个回答
0
投票

我必须承认此operator*的文档不是很清晰,但在语义上等效于:

operator*

因为q.toRotationMatrix() * v 仅设计为表示旋转。在您的情况下,由于无效四元数Eigen::Quaternion不为一元,因此它不表示任何旋转,并且返回值是不确定的。

请参阅q了解更多详细信息和讨论。

© www.soinside.com 2019 - 2024. All rights reserved.