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

Eigen product of the zero quaternion and any vector is not zero, is this a bug?

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

我需要执行四元数(可能是零四元数)与向量的乘积。问题是当四元数是零四元数(零实部和向量部分)时,值 returned 是向量本身。

我对汉密尔顿乘积定义的理解是,如果四元数是零-四元数,则乘积应该return 是零向量。我错了吗?

下面的代码片段显示了这个问题,我原以为向量 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;

干杯和感谢。

我不得不承认这个 operator* 的文档并不 crystal 清楚,但它在语义上等同于:

q.toRotationMatrix() * v

因为 Eigen::Quaternion 被设计为仅表示旋转。在您的情况下,由于空四元数 q 不是单一的,因此它不代表任何旋转,并且 return 值未定义。

有关详细信息和讨论,请参阅 bug 560