З Вікіпедії:
перехресний добуток - це двійкова операція над двома векторами в тривимірному евклідовому просторі, в результаті якої виникає інший вектор, перпендикулярний площині, що містить два вхідні вектори.
Враховуючи, що визначення визначається лише у трьох ( або семи, одиничному та нульовому ) вимірах, як розрахувати перехресний добуток двох двовимірних векторів?
Я бачив дві реалізації. Один повертає новий вектор (але приймає лише один вектор), інший - скаляр (але є розрахунком між двома векторами).
Реалізація 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 і не знаю, який метод використовувати.