Warum funktioniert m.col(1).cross(m.col(2)) nicht bei eigen::MatrixXd und was muss ich ändern?

Antwort

Das Problem liegt darin, dass die Methode `cross()` in Eigen für Vektoren definiert ist, nicht für Spalten von Matrizen. Um das Kreuzprodukt zwischen zwei Spalten einer Matrix zu berechnen, musst du sicherstellen, dass die Spalten als Vektoren behandelt werden. Hier ist, wie du das Kreuzprodukt zwischen den Spalten `1` und `2` der Matrix `m` korrekt berechnen kannst: ```cpp #include <Eigen/Dense> Eigen::MatrixXd m; // Deine Matrix m // ... (Matrix m initialisieren) Eigen::Vector3d result = m.col(1).head<3>().cross(m.col(2).head<3>()); ``` Stelle sicher, dass die Spalten, die du verwendest, Vektoren der richtigen Dimension sind (z.B. 3D-Vektoren für das Kreuzprodukt). Wenn deine Matrix `m` mehr als 3 Zeilen hat, kannst du die ersten drei Zeilen der Spalten verwenden, um das Kreuzprodukt zu berechnen.

Frage stellen und sofort Antwort erhalten

Verwandte Fragen

Wie füge ich einen 3D-Eigenvektor in die erste Spalte einer Eigen-Matrix(3, p) in C++ ein?

Um in eine Eigen-Matrix in C++ eine Spalte einzufügen, kannst du die Methode `col()` verwenden, um auf die gewünschte Spalte zuzugreifen, und dann die Werte des 3D-Vektors zuweisen. Hier ist... [mehr]