四元数

.x的骨骼动画关于旋转部分,采用的是四元数存储。

即 w,x,y,z

可以认为w是旋转的角度 x,y,z是旋转轴

实际上它们有如下关系


w = cos(a);

x = sin(a) * Vx * i;

y = sin(a) * Vy * j;

z = sin(a) * Vz * k;


其中a为旋转角度,

Vn=(Vx, Vy, Vz) 为旋转轴

而i j k是四元数的三个维度,可以认为是虚部 

有 i*i = -1,  j*j=-1, k*k=-1   并有 i*j=-k, 任意两个的乘积都有类似的关系


四元数构造了一个代数上的巧合,即一个向量v与四元数(四元数的模为1)做乘法,得到的结果相当于把

v绕向量Vn=(Vx, Vy, Vz)在与Vn垂直的平面内旋转;


所有引擎都是这么定义旋转 q * v * q(-1) 这样可以保存模为1,但转了两倍的角度。


比想像中的要简单,网上也有很多论文推导了四元数旋转公式。

笔者将在后继简要整理说明四元数旋转的推导过程,


posted @ 2014-06-16 17:49  飞天大蟾蜍  阅读(32)  评论(0编辑  收藏  举报