创建矩阵?

Lam*_*mda 0 c++ matrix eigen c++11

我正在尝试使用创建旋转矩阵Eigen::Matrix3d,但似乎无法准确地做到这一点.

void rot(double x,double y,double z)
{

    Eigen::Matrix3d x_r ((double)1,(double)0,(double)0,
                         (double)0,cos(x),-sin(x),
                         (double)0,sin(x),cos(x));

    Eigen::Matrix3d y_r (cos(y),(double)0,sin(y),
                        (double)0,(double)1,(double)0,
                         -sin(y),(double)0,cos(y));

    Eigen::Matrix3d z_r (cos(z),-sin(z),(double)0,
                         sin(z),cos(z),(double)0,
                         (double)0,(double)0,(double)1) ;

    Eigen::Matrix3d rot = z_r*y_r*x_r;

} 
Run Code Online (Sandbox Code Playgroud)

我出于某些奇怪的原因,我不能创建x_r,y_r,z_r?有人可以详细说明我做错了吗?

我收到的错误信息是:

error: no matching function for call to 'Eigen::Matrix<double, 3, 3>::Matrix(double, double, double, double, double, double, double, double, double)'
Run Code Online (Sandbox Code Playgroud)

首先我想我是因为我用的组合doubleint这就是为什么我在首位类型强制转换吧..

max*_*x66 5

试试吧

Eigen::Matrix3d x_r;
Eigen::Matrix3d y_r;
Eigen::Matrix3d z_r;

x_r << 1.0, 0.0, 0.0,
       0.0, cos(x), -sin(x),
       0.0 ,sin(x), cos(x);

y_r << cos(y), 0.0, sin(y),
       0.0, 1.0, 0.0,
       -sin(y), 0.0, cos(y);

z_r << cos(z), -sin(z), 0.0,
       sin(z), cos(z), 0.0,
       0.0, 0.0, 1.0;

Eigen::Matrix3d rot = z_r*y_r*x_r;
Run Code Online (Sandbox Code Playgroud)

似乎没有Eigen::Matrix3d你想要使用的构造函数:一个直接初始化值的构造函数.