Eigen实现欧拉角、四元数和旋转矩阵之间的变换

更新时间:2023-06-17 11:32:46 阅读: 评论:0

高中英语单词Eigen实现欧拉⾓、四元数和旋转矩阵之间的变换include相应的头⽂件
#include <Eigen/Geometry>
旋转矩阵和旋转向量的表⽰和声明及旋转
// 3D 旋转矩阵直接使⽤ Matrix3d 或 Matrix3f
Eigen::Matrix3d rotation_matrix = Eigen::Matrix3d::Identity();
瓶中信// 旋转向量使⽤ AngleAxis, 它底层不直接是 Matrix ,但运算可以当作矩阵(因为重载了运算符)
Eigen::AngleAxisd rotation_vector ( M_PI/4, Eigen::Vector3d ( 0,0,1 ) ); // 沿 Z 轴旋转 45 度
cout .precision(3);
cout<<"rotation matrix =\n"<<rotation_vector.matrix() <<endl; //⽤
matrix() 转换成矩阵
高中补习机构// ⽤ AngleAxis 可以进⾏坐标变换
骑自行车英语
dougie
Eigen::Vector3d v ( 1,0,0 );
Eigen::Vector3d v_rotated = rotation_vector * v;
cout<<"(1,0,0) after rotation = "<<anspo()<<endl;
// 或者⽤旋转矩阵
v_rotated = rotation_matrix * v;
cout<<"(1,0,0) after rotation = "<<anspo()<<endl;
欧拉⾓:可以将旋转矩阵直接转换成欧拉⾓
Eigen::Vector3d euler_angles = rotation_matrix.eulerAngles ( 2,1,0 ); // ZYX 顺序,即 yaw pitch roll
摆姿势英语怎么说顺序
副局长英文cout<<"yaw pitch roll = "<<anspo()<<endl;
欧⽒变换矩阵使⽤ Eigen::Isometry
Eigen::Isometry3d T=Eigen::Isometry3d::Identity(); //虽然称为 3d ,实质上是 4*4 的矩阵
genital是什么意思啊
T.pretranslate ( Eigen::Vector3d ( 1,3,4 ) ); //把平移向量设成 (1,3,4)
cout << "Transform matrix = \n" << T.matrix() <<endl;
⽤变换矩阵进⾏坐标变换北京项目管理师培训
Eigen::Vector3d v_transformed = T*v; //
相当于 R*v+t
cout<<"v tranformed = "<<anspo()<<endl;
业绩提升对于仿射和射影变换,使⽤ Eigen::Affine3d 和 Eigen::Projective3d 即可
四元数
q=[cos(θ/2),nxsin(θ/2),nysin(θ/2),nzsin(θ/2)]
/
/ 可以直接把 AngleAxis 赋值给四元数,反之亦然
Eigen::Quaterniond q = Eigen::Quaterniond ( rotation_vector );
cout<<"quaternion = \n"<&ffs() <<endl; // 请注意 coeffs 的顺序是 (x,y,z,w), w 为实部,前三者为虚
// 使⽤四元数旋转⼀个向量,使⽤重载的乘法即可
v_rotated = q*v; // 注意数学上是 qvq^{-1}
cout<<"(1,0,0) after rotation = "<<anspo()<<endl;

本文发布于:2023-06-17 11:32:46,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/90/148153.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:矩阵   旋转   变换   向量   重载   仿射
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图