现在时间是:
当前位置:首 页 >> Matlab>> 教学区>> 文章列表

16074303 作业6 实训: 四元数乘法与旋转变换

作者:黄彩双   发布时间:2019-05-18 19:42:09   浏览次数:175

作业6 实训: 四元数乘法与旋转变换

习题 1. p1=[a1;b1;c1;d1] p2=[a2;b2;c2;d2] 分别表示两个四元数 p1=a1+b1*i+c1*j+d1*k p2=a2+b2*i+c2*j+d2*k ,编写程序求 p=q1*q2

提示:

1)设 p=a+b*i+c*j+d*k 则可用 p=[a; b; c; d] 表示.

2)令

A=[a1 -b1 -c1 -d1

b1 a1 -d1 c1

c1 d1 a1 -b1

d1 -c1 b1 a1],

p=A*p2.

     分析 计算p=p1*p2,通过提示内容,可以先把一个四元数p1通过矩阵表示出来,然后再把p2用列向量表示出来,就可以通过矩阵乘以向量的形式,输出p=p1*p2的结果。

     代码

function p=siyuansu_5_11(p1,p2)

disp('计算p=p1*p2')

disp('请输入四元数p1=[a1;b1;c1;d1]')

syms a1 b1 c1 d1 ;

p1=input('p1=')

syms a2 b2 c2 d2 ;

disp('请输入四元数p2=[a2;b2;c2;d2]')

p2=input('p2=')

% A=[a1 -b1 -c1 -d1;b1 a1 -d1 c1;c1 d1 a1 -b1;d1 -c1 b1 a1]

A=[p1(1) -p1(2) -p1(3) -p1(4);

p1(2) p1(1) -p1(4) p1(3);

p1(3) p1(4) p1(1) -p1(2);

p1(4) -p1(3) p1(2) p1(1)]

p=A*p2;

     实验结果

>> siyuansu_5_11

计算p=p1*p2

请输入四元数p1=[a1;b1;c1;d1]

p1=[1;2;3;4]

 

p1 =

     1

     2

     3

     4

 

请输入四元数p2=[a2;b2;c2;d2]

p2=[2;3;4;5]

 

p2 =

     2

     3

     4

     5

 

A =

     1    -2    -3    -4

     2     1    -4     3

     3     4     1    -2

     4    -3     2     1

 

ans =

   -36

     6

    12

    12

习题 2. q1= 2+1*i+3*j+4*k q2=0+1*i+1*j-1*k,利用习题1中编写的程序计算 p=p1*p2, 并且利用 Bj Bi Bk 画图解释四元数乘积与旋转之间的关系。

     分析 ....

 

     代码

 

     实验结果

通过习题1中的程序,计算出p=p1*p2=[0;-5;7;-4]

>> siyuansu_5_11

计算p=p1*p2

请输入四元数p1=[a1;b1;c1;d1]

p1=[2;1;3;4]

请输入四元数p2=[a2;b2;c2;d2]

p2=[0;1;1;-1]

A =

     2    -1    -3    -4

     1     2    -4     3

     3     4     2    -1

     4    -3     1     2

ans =

     0

    -5

     7

    -4

 







上一篇:没有了    下一篇:没有了

Copyright ©2020    计算数学达人 All Right Reserved.

技术支持:自助建站 | 领地网站建设 |短信接口 |燕窝 版权所有 © 2005-2020 lingw.net.粤ICP备16125321号 -5