如何使用Eigen Libary从旋转矩阵确定轴角

时间:2016-02-02 05:33:12

标签: c++ matrix rotation transformation eigen

Eigen Library支持使用轴角参数创建矩阵。如何执行相反的操作并从矩阵中确定轴角(我对欧拉集合不感兴趣,只是单轴角度结果)。

1 个答案:

答案 0 :(得分:3)

Eigen提供一个AngleAxis构造函数,它以矩阵作为参数。所以,它只是:

#include <iostream>
#include <Eigen/Core>
#include <Eigen/Geometry>


int main()
{
    Eigen::Vector3d axis;
    axis.setRandom();
    std::cout << axis << "\n\n";
    axis.normalize();
    std::cout << axis << "\n\n";

    Eigen::Matrix3d mat;
    mat = Eigen::AngleAxisd(0.256, axis);

    Eigen::AngleAxisd newAngleAxis(mat);

    std::cout << newAngleAxis.angle() << "\n" << newAngleAxis.axis() << "\n\n";

    return 0;

}

哪个输出:

  

-0.997497
   0.127171
  -0.613392

     

-0.846852
   0.107965
  -0.520755

     

0.256
  -0.846852
   0.107965
  -0.520755

或类似的东西。