Из википедии:
перекрестное произведение - это бинарная операция над двумя векторами в трехмерном евклидовом пространстве, результатом которой является другой вектор, перпендикулярный плоскости, содержащей два входных вектора.
Учитывая, что определение определено только в трех ( или семи, одном и нулевом ) измерениях, как вычислить перекрестное произведение двух двумерных векторов?
Я видел две реализации. Один возвращает новый вектор (но принимает только один вектор), другой возвращает скаляр (но является вычислением между двумя векторами).
Реализация 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 и не знаю, какой метод использовать.