四元数

.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,但转了两倍的角度。


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

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


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值