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)
首先我想我是因为我用的组合double和int这就是为什么我在首位类型强制转换吧..
试试吧
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你想要使用的构造函数:一个直接初始化值的构造函数.