Aus Wikipedia:
Das Kreuzprodukt ist eine binäre Operation an zwei Vektoren in einem dreidimensionalen euklidischen Raum, die zu einem anderen Vektor führt, der senkrecht zu der Ebene ist, die die beiden Eingabevektoren enthält.
Wie berechnet man das Kreuzprodukt zweier 2d-Vektoren , da die Definition nur in drei ( oder sieben, eins und null ) Dimensionen definiert ist?
Ich habe zwei Implementierungen gesehen. Einer gibt einen neuen Vektor zurück (akzeptiert aber nur einen einzelnen Vektor), der andere gibt einen Skalar zurück (ist jedoch eine Berechnung zwischen zwei Vektoren).
Implementierung 1 (gibt einen Skalar zurück):
float CrossProduct(const Vector2D & v1, const Vector2D & v2) const
{
return (v1.X*v2.Y) - (v1.Y*v2.X);
}
Implementierung 2 (gibt einen Vektor zurück):
Vector2D CrossProduct(const Vector2D & v) const
{
return Vector2D(v.Y, -v.X);
}
Warum die unterschiedlichen Implementierungen? Wofür würde ich die skalare Implementierung verwenden? Wofür würde ich die Vektorimplementierung verwenden?
Der Grund, den ich frage, ist, dass ich selbst eine Vector2D-Klasse schreibe und nicht weiß, welche Methode ich verwenden soll.