主要内容

旋转点

四元数点旋转

描述

例子

轮换案例=旋转点(Quat.cartesianPoints的)使用四元素旋转笛卡尔点,Quat.。在旋转之前使用前季鎓的元素是标准化的。

例子

全部收缩

在三维空间中定义一个点。点的坐标总是按顺序指定的XyZ.。为了方便的可视化,定义了该点X-y飞机。

x = 0.5;y = 0.5;z = 0;绘图(x,y,“柯”)举行轴([-1 1 -1 1])

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

创建一个单独的向量,指定两个单独的旋转,一个旋转点45,另一个旋转点-90度旋转Z.-轴。用旋转点执行旋转。

quat =四元音([0,0,pi / 4;......0,0,-PI / 2],'euler''XYZ''观点');RotatedPoint = RotatePoint(Quat,[x,y,z])
旋转点=2×3-0.0000 0.7071 0 0.5000 -0.5000 0

绘制旋转点。

绘图(旋转点(1,1),旋转点(1,2),“波”)绘图(旋转点(2,1),旋转点(2,2),'走'的)

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

在三维空间中定义两个点。通过首先旋转旋转,定义四元度以旋转点Z.-AXIS 30度,然后关于新的y设在45度。

a = [1,0,0];b = [0,1,0];quat =四元数([30,45,0],'eulerd''Zyx''观点');

旋转点使用四元旋转操作员旋转两个点。显示结果。

RP =旋转点(QUAT,[A; B])
RP =2×30.6124 0.5000 -0.6124 -0.3536 0.8660 0.3536

可视化原始方向和点的旋转方向。为了直观起见,从原点到每个点画线。

Plot3(a(1),a(2),a(3),“波”);抓住网格轴([ -  1 1 -1 1 -1 1])xlabel('X') ylabel ('是')Zlabel('z')Plot3(B(1),B(2),B(3),'ro');Plot3(RP(1,1),RP(1,2),RP(1,3),'bd')Plot3(RP(2,1),RP(2,2),RP(2,3),'rd')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; a(1)],[0; a(2)],[0; a(3)],'k')plot3([0; b(1)],[0; b(2)],[0; b(3)],'k'的)

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

输入参数

全部收缩

定义旋转的四元轴,指定为标量四元数,四元数的行向量,或四元数的列向量。

数据类型:四元数

三维笛卡尔点,指定为1×3载体或N.3矩阵。

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

输出参数

全部收缩

使用四元数旋转定义的旋转笛卡尔点,返回为大小相同的向量或矩阵cartesianPoints

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

算法

四元数点旋转旋转指定的点R.3.根据指定的四元音:

L. 问: 的) = 问: 问: *

在哪里问:是四元音,*代表接合,是要旋转的点,指定为四元数。

为方便起见,旋转点函数需要一个点R.3.并返回一个点R.3.。给定有一个任意四元数的函数调用,问:=一种+B.我+Cj +D.K.,和任意坐标,[XyZ.]例如,

RereferenceSpoint =旋转点(Q,[x,y,z])
旋转点函数执行以下操作:

  1. 将点[XyZ.]到四元数:

    问: = 0. + X 一世 + y j + Z. K.

  2. 正常化四元数,问:

    问: N. = 问: 一种 2 + B. 2 + C 2 + D. 2

  3. 适用旋转:

    V. 问: = 问: 问: 问: *

  4. 转换四元数输出,V.问:, 回到R.3.

扩展能力

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

也可以看看

职能

对象

介绍在R2019B.