最佳答案
来自维基百科:
交叉二元运算是 三维的欧几里德空间中两个向量的交叉乘积,它导致了另一个垂直于包含两个输入向量的平面的向量。
鉴于定义只定义在三个维度(或者七,一,零) ,如何计算两个二维矢量的交叉乘积?
我已经看到了两个实现。一个返回一个新向量(但只接受一个向量) ,另一个返回一个标量(但是是两个向量之间的计算)。
实现1(返回一个标量) :
float CrossProduct(const Vector2D & v1, const Vector2D & v2) const
{
return (v1.X*v2.Y) - (v1.Y*v2.X);
}
实现2(返回一个向量) :
Vector2D CrossProduct(const Vector2D & v) const
{
return Vector2D(v.Y, -v.X);
}
为什么要使用不同的实现? 我将使用标量实现做什么? 我将使用向量实现做什么?
我问这个问题的原因是因为我自己正在编写一个 Vector2D 类,不知道使用哪个方法。