主要内容

罗马

将四元数转换为旋转矩阵

描述

例子

RotationMatrix.= rotmat(quat.旋转型转换四元数,quat.,到等效的旋转矩阵表示。

例子

全部收缩

定义用于点旋转的四元数。

θ= 45;伽玛= 30;quat =四元音([0,θ,伽玛],'eulerd''Zyx''观点'
quat =四元素0.8924 + 0.23912i + 0.36964J + 0.099046K

将四元数转换为旋转矩阵。

RotationMatrix = Rotmat(Quat,'观点'
RotationMatrix =3×30.7071 -0.0000 0.7071 0.3536 0.8660 -0.3536 -0.6124 0.5000 0.6124

要验证旋转矩阵,直接创建与旋转对应的两个旋转矩阵y- 和X-axes。乘以旋转矩阵并与输出进行比较罗马

θ= 45;伽玛= 30;ry = [cosd(θ)0 sind(θ);......0 1 0;......-sind(θ)0 cosd(θ)];rx = [1 0 0;......0 COSD(GAMMA)-sind(伽玛);......0 Sind(伽玛)COSD(伽玛)];RotationMatrixVerification = RX * RY
RotationMatrixVerification =3×30.7071 0 0.7071 0.3536 0.8660 -0.3536 -0.6124 0.5000 0.6124

定义用于帧旋转的四元数。

θ= 45;伽玛= 30;quat =四元音([0,θ,伽玛],'eulerd''Zyx''框架'
quat =四元素0.8924 + 0.23912i + 0.36964J  -  0.099046K

将四元数转换为旋转矩阵。

RotationMatrix = Rotmat(Quat,'框架'
RotationMatrix =3×30.7071 -0.0000 -0.7071 0.3536 0.8660 0.3536 0.6124 -0.5000 0.6124

要验证旋转矩阵,直接创建与旋转对应的两个旋转矩阵y- 和X-axes。乘以旋转矩阵并与输出进行比较罗马

θ= 45;伽玛= 30;ry = [cosd(θ)0 -sind(θ);......0 1 0;......Sind(θ)0 cosd(θ)];rx = [1 0 0;......0 cosd(γ)sind(伽玛);......0 -sind(伽马)cosd(伽玛)];RotationMatrixVerification = RX * RY
RotationMatrixVerification =3×30.7071 0 -0.7071 0.3536 0.8660 0.3536 0.6124 -0.5000 0.6124

创建一个3×1标准化的四元数向量。

qvec =标准化(四元数(Randn(3,4)));

将四元数阵列转换为旋转矩阵。页面罗马塔雷对应于线性指数QVEC.

rotmatarray = rotmat(qvec,'框架');

认为QVEC.罗马塔雷对应于一系列旋转。将四元旋转旋转结合成单个表示,然后将四元数旋转应用于任意初始化的笛卡尔点。

loc =标准化(Randn(1,3));quat = prod(qvec);旋转框架(QUAT,LOC)
ans =.1×3.0.9524 0.5297 0.9013

将旋转矩阵组合成单个表示,然后将旋转矩阵应用于相同的初始笛卡尔点。验证四元旋转和旋转矩阵导致相同的方向。

totalrotmat =眼睛(3);为了i = 1:尺寸(rotmatarray,3)totalrotmat = rotmatarray(:,:,i)* totalrotmat;结尾totalrotmat * loc'
ans =.3×10.9524 0.5297 0.9013

输入参数

全部收缩

四元素要转换,指定为标量,矢量,矩阵或多维数组。

数据类型:四元素

由此表示的旋转类型RotationMatrix.输出,指定为'框架'或者'观点'

数据类型:char|细绳

输出参数

全部收缩

旋转矩阵表示,作为3×3矩阵或3×3返回 -N多维数组。

  • 如果quat.是标量,RotationMatrix.作为3×3矩阵返回。

  • 如果quat.是非标量的,RotationMatrix.作为3-by-3返回 -N多维阵列,在哪里RotationMatrix(:,:我)是对应的旋转矩阵quat(i)

旋转矩阵的数据类型与基础数据类型相同quat.

数据类型:单身的|双倍的

算法

给出了表格的四分之一

问: = 一种 + B. 一世 + C j + D. K.

用于帧旋转的等效旋转矩阵被定义为

[ 2 一种 2 - 1 + 2 B. 2 2 B. C + 2 一种 D. 2 B. D. - 2 一种 C 2 B. C - 2 一种 D. 2 一种 2 - 1 + 2 C 2 2 C D. + 2 一种 B. 2 B. D. + 2 一种 C 2 C D. - 2 一种 B. 2 一种 2 - 1 + 2 D. 2 ]

用于点旋转的等效旋转矩阵是帧旋转矩阵的转换:

[ 2 一种 2 - 1 + 2 B. 2 2 B. C - 2 一种 D. 2 B. D. + 2 一种 C 2 B. C + 2 一种 D. 2 一种 2 - 1 + 2 C 2 2 C D. - 2 一种 B. 2 B. D. - 2 一种 C 2 C D. + 2 一种 B. 2 一种 2 - 1 + 2 D. 2 ]

参考

[1] Kuipers,杰克B.四元数和旋转序列:具有轨道,航空航天和虚拟现实的应用的底漆。普林斯顿,新泽:普林斯顿大学出版社,2007年。

扩展能力

C / C ++代码生成
使用MATLAB®Coder™生成C和C ++代码。

在R2018B中介绍