四元数的简单应用

关于四元数,网上的教程很多,但是大多都是装B版本,像我一样早就把线性代数换给老师的同学,会发现看了之后还是云里雾里,既不知道怎么用,也不知道用了有什么意义,现在我来已最直白,最简单的方式告诉大家用法。

1.四元数表示的旋转公式如下

代表旋转行为的四元数有四个分量 :( X,Y,Z , W ),W为实部,XYZ为虚部,什么是实部虚部?不懂忽略就行了,等有空去看《3D游戏与计算机图形学中的数学方法》youku 视频,里面有详细说明。

我们只需要知道,下面红色部分代表的意义就可以了,

W =1 *cos(旋转角度/2)
X = 旋转轴向量x分量 * sin(旋转角度/2) 
Y = 旋转轴向量y分量 * sin(旋转角度/2)
Z = 旋转轴向量z分量 * sin(旋转角度/2)

通过上面的公式的到WXYZ四个分量,就构成了我们旋转行为对应的四元数,表示在坐标空间下,沿旋转轴向量(x,y,z),进行指定旋转角度的旋转,请看下图。


我们先摆放好测试圆柱体的初始位置,图中红绿蓝三个长条分别穿过世界坐标系的(0,0)且分别平行于世界坐标的XYZ轴



2.四元素在Unity world coordinate 中是已左手坐标系进行旋转,左手大拇指指向旋转轴方向,其余四指指向旋转方向,如下面旋转


表示沿X轴,旋转90度


3.四元素相乘,表示从右至左两次旋转先后执行,如下,先沿空间X轴旋转90度,再沿空间Y轴旋转90度


如果我们把顺序倒过来,就会出现如下情况,先沿空间Y轴旋转90度,再沿空间X轴旋转90度



所以当你要叠加旋转时,请一定主意顺序,叠加顺序是依次从右至左!


猜你喜欢

转载自blog.csdn.net/u012149999/article/details/79860983