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