[TOC]

概述

文章参考:https://blog.csdn.net/hjwang1/article/details/106752766

四元数(Quaternions)

什么是四元数呢?

文章参考:https://www.zhihu.com/tardis/zm/art/97186723?source_id=1003

四元数最早于1843年由Sir William Rowan Hamilton发明,作为复数(complex numbers)的扩展。直到1985年才由Shoemake把四元数引入到计算机图形学中。四元数在一些方面优于Euler angles(欧拉角)和matrices。任意一个三维空间中的定向(orientation,即调置朝向)都可以被表示为一个绕某个特定轴的旋转。给定旋转轴及旋转角度,很容易把其它形式的旋转表示转化为四元数或者从四元数转化为其它形式。四元数可以用于稳定的、经常性的(constant)的orientations(即旋转)插值,而这些在欧拉角中是很难实现的。

使用

1
2
3
4
5
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的旋转矩阵初始化四元数。