Z Wikipedii:
iloczyn poprzeczny jest operacją binarną na dwóch wektorach w trójwymiarowej przestrzeni euklidesowej, w wyniku której powstaje inny wektor, który jest prostopadły do płaszczyzny zawierającej dwa wektory wejściowe.
Biorąc pod uwagę, że definicja jest zdefiniowana tylko w trzech ( lub siedmiu, jednym i zera ) wymiarach, w jaki sposób można obliczyć iloczyn poprzeczny dwóch wektorów 2D?
Widziałem dwie implementacje. Jeden zwraca nowy wektor (ale akceptuje tylko jeden wektor), drugi zwraca wartość skalarną (ale jest obliczeniem między dwoma wektorami).
Implementacja 1 (zwraca wartość skalarną):
float CrossProduct(const Vector2D & v1, const Vector2D & v2) const
{
return (v1.X*v2.Y) - (v1.Y*v2.X);
}
Implementacja 2 (zwraca wektor):
Vector2D CrossProduct(const Vector2D & v) const
{
return Vector2D(v.Y, -v.X);
}
Po co różne implementacje? Do czego użyłbym implementacji skalarnej? Do czego użyłbym implementacji wektora?
Pytam, ponieważ sam piszę klasę Vector2D i nie wiem, której metody użyć.