本征二维叉积

Eigen 2D cross product

Eigen 可以做二维叉积吗?

我正在尝试替换此代码:

Eigen::Vector2f a, b;
float result = a.x()*b.y() - b.x()*a.y();

有了这个:

Eigen::Vector2f a, b;
float result = a.cross(b);

但是,这给了我以下错误:

error C2338: THIS_METHOD_IS_ONLY_FOR_VECTORS_OF_A_SPECIFIC_SIZE

更新

当然 Avi Ginsburg 是对的,它并没有真正定义。所以澄清一下:我正在寻找的是叉积的长度(如果我理解正确的话,基本上是向量之间夹角的正弦值)。

叉积的结果是向量,而不是浮点数。无论如何,二维叉积没有意义。在 2D 中,结果向量必须垂直于 ab 并且它们已经定义了平面,因此结果必须在第三维中。

这个问题已经考虑过了,看这个feature request