De wikipedia:
el producto cruzado es una operación binaria sobre dos vectores en un espacio euclidiano tridimensional que da como resultado otro vector que es perpendicular al plano que contiene los dos vectores de entrada.
Dado que la definición solo se define en tres ( o siete, uno y cero ) dimensiones, ¿cómo se calcula el producto cruzado de dos vectores 2d?
He visto dos implementaciones. Uno devuelve un nuevo vector (pero solo acepta un único vector), el otro devuelve un escalar (pero es un cálculo entre dos vectores).
Implementación 1 (devuelve un escalar):
float CrossProduct(const Vector2D & v1, const Vector2D & v2) const
{
return (v1.X*v2.Y) - (v1.Y*v2.X);
}
Implementación 2 (devuelve un vector):
Vector2D CrossProduct(const Vector2D & v) const
{
return Vector2D(v.Y, -v.X);
}
¿Por qué las diferentes implementaciones? ¿Para qué usaría la implementación escalar? ¿Para qué usaría la implementación del vector?
La razón por la que pregunto es porque yo mismo estoy escribiendo una clase de Vector2D y no sé qué método usar.