主要内容

rotateframe

四元数帧旋转

描述

例子

rotationResult= rotateframe (皮疹,cartesianPoints)旋转的参照系笛卡尔点使用四元数,皮疹。四元数的元素在旋转规范化使用前。

框架旋转

例子

全部折叠

在三维空间中定义一个点。一个点的坐标总是指定的顺序x,y,z。为方便的可视化,定义的点x- - - - - -y飞机。

x = 0.5;y = 0.5;z = 0;情节(x, y,“柯”)举行轴([1 1 1 1])

图包含一个坐标轴对象。坐标轴对象包含一个类型的对象。

创建一个指定两个独立旋转四元数向量,旋转45度,另一个旋转-90度有关z设在。使用rotateframe执行旋转。

皮疹=四元数([0,0,π/ 4;0,0,-π/ 2)“欧拉”,“XYZ”,“帧”);rereferencedPoint = rotateframe(皮疹,[x, y, z])
rereferencedPoint =2×30.7071 - -0.0000 -0.5000 - 0.5000 0

情节rereferenced点。

情节(rereferencedPoint (1, 1), rereferencedPoint (1、2),“波”)情节(rereferencedPoint (2, 1), rereferencedPoint (2, 2),“去”)

图包含一个坐标轴对象。坐标轴对象包含3线类型的对象。

定义两个点在三维空间中。定义一个四元数rereference点的第一旋转的参考系z然后对新设在30度y设在45度。

一个= (1,0,0);b = (0,1,0);皮疹=四元数((30、45 0),“eulerd”,“ZYX股票”,“点”);

使用rotateframe参考点使用四元数的旋转操作符。显示结果。

rP = rotateframe(皮疹,[a, b])
rP =2×30.6124 -0.3536 0.7071 0.5000 0.8660 -0.0000

可视化的原始方向和旋转方向点。画线从原点到每个点的可视化的目的。

plot3 ((1), (2), (3),“波”);持有网格轴([1 1 1 1 1 1])包含(“x”)ylabel (“y”)zlabel (“z”b) plot3 (b (1), (2), (3),“罗”);plot3 (rP (1, 1), rP (1、2), rP (1、3)“bd”)plot3 (rP (2, 1), rP (2, 2), rP (2、3),“路”)plot3 ([0, rP (1,1)], [0; rP (1,2)], [0; rP (1、3)],“k”)plot3 ([0, rP (2,1)], [0; rP (2, 2)]、[0; rP (2、3)],“k”)plot3 ([0, (1)]、[0; (2)), (0; (3)),“k”)plot3 ([0; b (1)]、[0; b (2)]、[0; b (3)],“k”)

图包含一个坐标轴对象。坐标轴对象包含8线类型的对象。

输入参数

全部折叠

四元数定义旋转,指定为一个标量四元数和四元数的向量。

数据类型:四元数

三维笛卡尔点,或指定为1×3向量N3矩阵。

数据类型:|

输出参数

全部折叠

笛卡尔点旋转参考系中定义引用,返回向量或矩阵大小一样cartesianPoints

的数据类型re-referenced笛卡尔点是一样的底层数据类型的皮疹

数据类型:|

算法

四元数帧旋转re-references中指定一个点R3通过旋转的原始帧参考根据指定的四元数:

l ( u ) = * u

在哪里四元数,*代表接合,u是点旋转,指定为一个四元数。

为了方便起见,rotateframe函数接受一个点R3并返回一个点R3。给定一个函数调用一些任意的四元数,=一个+b我+cj +dk,和任意坐标,(x,y,z],

点= [x, y, z];rereferencedPoint = rotateframe (q点)
rotateframe函数执行以下操作:

  1. 将点(x,y,z]一个四元数:

    u = 0 + x + y j + z k

  2. 可实现四元数,:

    n = 一个 2 + b 2 + c 2 + d 2

  3. 应用旋转:

    v = * u

  4. 将四元数转换为输出,v,回到R3

扩展功能

C / c++代码生成
生成C和c++代码使用MATLAB®编码器™。

另请参阅

功能

对象

介绍了R2019b