2013-02-23 266 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