de Wikipedia:Cálculo de la Cruz de un Vector 2D Producto
el producto vectorial es una operación binaria en dos vectores en un espacio euclidiano tridimensional que resulta en otro vector que es perpendicular al plano que contiene la dos vectores de entrada.
Dado que la definición solo se define en tres dimensiones (or seven, one and zero), ¿cómo se calcula el producto cruzado de dos vectores bidimensionales?
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).
Aplicación 1 (devuelve un escalar):
float CrossProduct(const Vector2D & v1, const Vector2D & v2) const
{
return (v1.X*v2.Y) - (v1.Y*v2.X);
}
Aplicación 2 (devuelve un vector):
Vector2D CrossProduct(const Vector2D & v) const
{
return Vector2D(v.Y, -v.X);
}
por qué el implementaciones diferentes? ¿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 estoy escribiendo una clase Vector2D y no sé qué método usar.
La implementación 2 es incorrecta. Necesita dos vectores para formar un producto cruzado. – bobobobo
La implementación 2 gira el vector dado _v_ en -90 grados. Sustitúyase -90 en 'x '= x cos θ - y sin θ' y' y' = x sin θ + y cos θ'. Otra variación de esta implementación sería 'devolver Vector2D (-v.Y, v.X);' que gira _v_ en +90 grados. – legends2k
@ legends2k: Vale la pena señalar que la implementación 2 es una extensión de [el uso del determinante para evaluar el producto cruzado] (https: //en.wikipedia.org/wiki/Cross_product # Matrix_notation): simplemente elimine la última fila y columna. Dicha extensión siempre tiene operandos 'N-1' para dimensiones' N'. –