C++ 本征二维叉积

C++ 本征二维叉积,c++,vector,geometry,eigen,eigen3,C++,Vector,Geometry,Eigen,Eigen3,艾根能做二维叉积吗 我试图替换此代码: Eigen::Vector2f a, b; float result = a.x()*b.y() - b.x()*a.y(); 为此: Eigen::Vector2f a, b; float result = a.cross(b); 但是,这给了我以下错误: 错误C2338:此方法仅适用于特定大小的向量 更新 当然,阿维·金斯伯格是对的,它并没有真正的定义。所以澄清一下:我要寻找的是叉积的长度(基本上是向量之间角度的正弦,如果我理解正确的话)。叉积的结

艾根能做二维叉积吗

我试图替换此代码:

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

Eigen::Vector2f a, b;
float result = a.cross(b);
但是,这给了我以下错误:

错误C2338:此方法仅适用于特定大小的向量

更新


当然,阿维·金斯伯格是对的,它并没有真正的定义。所以澄清一下:我要寻找的是叉积的长度(基本上是向量之间角度的正弦,如果我理解正确的话)。

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

这个问题已经考虑过了,请看这个。

谢谢,更新了我的问题Jan真正想要的是外部/外部产品。这适用于任何维度。对于3D,它是叉积(伪向量)的对偶,对于2D,它是标量(伪标量)的对偶。这将是方便的,有这个在本征。最好的方法是为列向量参数返回行向量,反之亦然。(遗憾的是,对于2D,你不能仅凭伪标量的维数(1x1)来区分伪标量和标量)更严格的表示法,请参见几何代数。你对第一个解有什么反对意见?您可以考虑计算2x2行列式。@ YVISDAUSTST,我只是认为使用一个预定义函数来进行这样的“标准”计算是更好的,而不是自己做计算。对于2x2的情况,使用泛型函数很可能是多余的。