玩命加载中 . . .

Eigen_Quaternion


旋转向量到旋转矩阵

double alpha = M_PI / 3;
AngleAxisd rotation_vector(alpha, Vector3d(1, 0, 0));
// x轴: 1 0 0
// y轴: 0 1 0
// z轴: 0 0 1

MatrixXd rotation_matrix;

rotation_matrix = rotation_vector.matrix();
// rotation_matrix = rotation_vector.toRotationMatrix();

cout << rotation_matrix << endl;
// 1         0         0
// 0       0.5 -0.866025
// 0  0.866025       0.5

旋转向量到欧拉角

Vector3d eulerAngle = rotation_vector.matrix().eulerAngles(2, 1, 0);
// ZYX: 2, 1, 0

cout << eulerAngle << endl;
//      0
//     -0
// 1.0472

旋转向量到四元数

Quaterniond quaternion(rotation_vector);
cout << quaternion.coeffs() << endl;
//      0.5
//        0
//        0
// 0.866025

cout << quaternion.x() << endl;
cout << quaternion.y() << endl;
cout << quaternion.z() << endl;
cout << quaternion.w() << endl;
// 0.5
// 0
// 0
// 0.866025

Quaterniond quaternion2;
quaternion2 = rotation_vector;  // 重载了'='
cout << quaternion2.coeffs() << endl;
//      0.5
//        0
//        0
// 0.866025

// 四元数的初始化
Quaterniond quaternion(w, x, y, z);

文章作者: kunpeng
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 kunpeng !
  目录