来自维基百科:
叉积是在三维欧几里得空间中对两个向量进行二元运算,产生另一个向量,该向量垂直于包含两个输入向量的平面。
鉴于定义仅在三个(或七个、一和零)维度中定义,如何计算两个二维向量的叉积?
我见过两种实现。一个返回一个新向量(但只接受一个向量),另一个返回一个标量(但是是两个向量之间的计算)。
实现 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 类并且不知道使用哪种方法。