Quaterniond的初始

Eigen::Quaterniond q1(w, x, y, z);// 第一种方式Eigen::Quaterniond q2(Vector4d(x, y, z, w));// 第二种方式Eigen::Quaterniond q2(Matrix3d(R));// 第三种方式

以上两种方式是不同的,在Quaternion内部的保存中,虚部在前,实部在后,

如果以第一种方式构造四元数,则实部是w, 虚部是[x,y,z];

对于第二种方式,则实部是w,虚部是[x,y,z];

对于第三种方式,则是用3x3的旋转矩阵初始化四元数。

template<typename _Scalar , int _Options>
template<typename Derived >
Eigen::Quaternion< _Scalar, _Options >::Quaternion    (   const MatrixBase< Derived > &     other   )   

Constructs and initializes a quaternion from either:

  • a rotation matrix expression,
  • a 4D vector expression representing quaternion coefficients.

四元数、旋转矩阵、旋转向量、欧拉角相互转化:

  • ref:ceres-solver/include/ceres/rotation.h
#include <iostream>#include <Eigen/Core>
#include <Eigen/Geometry>
#define PI (3.1415926535897932346f)int main(int argc, char **argv)
{using ::std::cout;using ::std::endl;double yaw = PI/3,pitching = PI/4,droll = PI/6;//EulerAngles to RotationMatrix::Eigen::Vector3d ea0(yaw,pitching,droll);::Eigen::Matrix3d R;R = ::Eigen::AngleAxisd(ea0[0], ::Eigen::Vector3d::UnitZ())* ::Eigen::AngleAxisd(ea0[1], ::Eigen::Vector3d::UnitY())* ::Eigen::AngleAxisd(ea0[2], ::Eigen::Vector3d::UnitX());cout << R << endl << endl;//RotationMatrix to Quaterniond::Eigen::Quaterniond q; q = R;    cout << q.x() << endl << endl;cout << q.y() << endl << endl;cout << q.z() << endl << endl;cout << q.w() << endl << endl;//Quaterniond to RotationMatrix::Eigen::Matrix3d Rx = q.toRotationMatrix();cout << Rx << endl << endl;//RotationMatrix to EulerAngles::Eigen::Vector3d ea1 = Rx.eulerAngles(2,1,0);     cout << ea1/PI*180 << endl << endl;std::cin.ignore();return 0;
}

Eigen中四元数Quaterniond的初始相关推荐

  1. Eigen中eulerAngles()得到欧拉角的奇异问题

    Eigen中得到欧拉角的奇异问题 1.1.关于欧拉角范围的定义 欧拉角的实际范围是: roll:[−π,π];pitch:[−π/2,π/2];yaw:[−π,π]roll:[-\pi, \pi];\ ...

  2. D3D中四元数的表示

    1.定义. DIRECTX9文档中定义,令q为一四元数,theta为绕轴axis旋转的角度,则: q.x = sin(theta/2) * axis.x q.y = sin(theta/2) * ax ...

  3. 【转】刨根究底CSS(2):CSS中的各种值——初始值,就是默认值吗?

    先问个非常简单的问题,这个问题的答案,相信大部分Web开发人员都自认为显而易见,但却又多半会答错:CSS属性中的初始值(initial value),就是默认值(default value)吗? 难道 ...

  4. java list初始容量_java中快速创建带初始值的List和Map实例

    java中快速创建带初始值的List和Map实例 初始化一个List和Map对象并为期加入值的写法如下: List sList = new ArrayList(); sList.add("s ...

  5. 暗黑地牢dlc文件夹或mods文件夹中某个mod在初始界面开新档不显示/不加载的解决办法

    暗黑地牢 Darkest Dungeon dlc文件夹或mods文件夹中某个mod在初始界面开新档不显示/不加载的解决办法 (记录博文) 相关提示 检查mod完整性(参考正确的mod文件结构进行判断) ...

  6. Eigen中的混叠(aliasing)问题

    Eigen中的混叠(aliasing)问题 Eigen中aliasing指的是在赋值表达式的左右两边存在矩阵的重叠区域,这种情况下,有可能得到非预期的结果.如mat = 2*mat或者mat = ma ...

  7. [矩阵的三角分解系列六] Eigen中的三角分解

    Eigen中的三角分解 简介 安装命令 三角分解函数 使用范例 矩阵的三角分解是求解线性方程组常用的方法,包括LU分解,LDU分解,杜利特(Doolittle)分解,克劳特(Crout)分解,LLT( ...

  8. [Eigen中文文档] 矩阵与向量运算

    专栏总目录 本文目录 介绍 加法与减法 标量的标量乘法与除法 表达式模板 转置与共轭 (矩阵与矩阵)和(矩阵与向量)的乘积 点积和叉积 基本算术的简化运算 操作的有效性 英文原文(Matrix and ...

  9. eigen 编译_头条 | 使用eigen实现四元数、欧拉角、旋转矩阵、旋转向量间的转换...

    点击上方蓝字,关注本公众号,获得更多资源上一篇文章介绍了四元数.欧拉角.旋转矩阵.轴角如何相互转换,本篇文章介绍如何用eigen来实现. 旋转向量 1,初始化旋转向量:旋转角为alpha,旋转轴为(x ...

最新文章

  1. vm ububtu突然没网
  2. 谈谈离散卷积和卷积神经网络
  3. python现有两个磁盘文件a和b_有两个磁盘文件A和B,各存放一行字母,要求把这两个文件中的信息合并(按字母顺序排列), 输出到一个新文件C中Python实例...
  4. java捕捉了异常_java 异常捕获与异常处理
  5. 计算机组成原理(二)数据的表示和运算
  6. MySQL字段拼接Concat
  7. linux版的navicat提示丢失scilexer.dll
  8. RTX5 | 消息队列01 - 创建消息队列
  9. 计算机2020中级考试题,突发!2020年中级考试分值及评分标准大变!
  10. 【报告分享】2019-2020年企业调薪参考手册.pdf(附下载链接)
  11. Php怎么挑出不含4的数,关于 64 位 PHP 使用 PHP_INT_SIZE 输出得到 4 的问题
  12. 【问底】徐汉彬:PHP7和HHVM的性能之争
  13. (转)Apache服务器使用.htaccess实现图片防盗链方法教程
  14. Atitit q2016 q4 doc list on home ntpc.docx
  15. 第k小元素——分治法
  16. 计算机考试画箭头,几何画板如何画箭头 绘制方法介绍
  17. 金丹期前期:1.11、python语言进阶-网络
  18. 微信程序开发系列教程(四)使用微信API创建公众号自定义菜单
  19. 基于ITK的读并写 2D的DICOM 图像
  20. 拼多多活动主图尺寸多少?企立方来告诉你!

热门文章

  1. 你还在关注 AGV,而 AMR 已经悄然崛起
  2. 天池竞赛-金融风控-task1
  3. 极客日报:库克对话何同学:苹果很多功能来自中国消费者反馈;高通、微软、谷歌联合施压监管方:反对NVIDIA收购ARM...
  4. Win10下开机自动启动运行bat脚本并打开cmd运行命令
  5. 玩转Atlas 200DK(一)分设环境之开发环境准备
  6. R语言使用glm函数构建拟泊松回归模型(quasi-Poisson regression)、family参数设置为quasipoisson、summary函数获取拟泊松回归模型汇总统计信息
  7. 三星拿出了四摄手机,可惜诚意不足,挑战国产手机成奢望
  8. iOS主线程卡顿监测
  9. PHP导出基类(PHPExcel,PhpSpreadsheet)
  10. 一文读懂babel的使用