2013-02-23 250 views

回答

11

首先必須構造一個quaternion,然後將其轉換爲一個矩陣,例如:

#include <Eigen/Geometry> 
using namespace Eigen; 

int main() { 
    Vector3f A, B; 
    Matrix3f R; 
    R = Quaternionf().setFromTwoVectors(A,B); 
} 
+0

值得注意的是,需要一個額外的'.toRotationMatrix()''後(A,B)'到工作,因爲'R'是一個矩陣。 – 2013-09-10 10:08:00

+1

不,有一個運算符=的重載,使它工作。但是,它們各自是明確的,因此'Matrix3f R = Quaternionf()。setFromTwoVectors(A,B);'需要'.toRotationMatrix()'或者明確地轉換爲'Matrix3f(。)',或者明確地調用ctor與'Matrix3f R(Quaternionf()。setFromTwoVectors(A,B));' – ggael 2013-09-11 08:20:59

+0

對不起我的錯!錯過了那微小的微妙。感謝您解釋這些差異。 – 2013-09-11 16:55:47