四元数旋转公式的证明

有很多文章和帖子讨论四元数在3D游戏旋转方面的应用,但是四元数旋转公式是怎么来的,很多人都不清楚,资料也很少,这里推导一下,欢迎大家指正。

命题:设四元数u= a*i + b*j + c*k,且 u^2= -1;对于任意四元数p,以u为轴正向旋转(右手坐标系中逆时针方向,左手坐标系中顺时针方向)θ角度,得到向量p',则:p' =r* p * r^(-1),其中r =cos(θ/2)sin(θ/2) * u

证明

r*r ^(-1)= 1 = r ^(-1) * r   ...... 1

在方程( 1)两边同时乘以r的共轭r*,可以得到:

r*=  r ^(-1) * r * r * = r ^(-1) * |r| ^2  ...... 2

又由:|r|^2 = (cos(θ /2))^2 + (sin(θ /2))^2* a^2 + b^2 + c^2 = 1

r^(-1)= r */ |r| ^2 = r * =cos(θ /2) -sin(θ /2) * u


如图所示, 设四元数vu垂直,与 u,p共面,且v^2 = -1;四元数=u * v ,则u ,v ,w组成一个直角坐标系。


p = s *u + t *v

r*p*r^(-1) = (cos(θ/2)+sin(θ/2) * u) * ( s * u + t * v ) * (cos(θ/2) -sin(θ/2) * u)

 = ( s * cos(θ/2)* u +t* cos(θ/2)*v -s* sin(θ/2) +t* sin(θ/2)*w) * (cos(θ/2) -sin(θ/2) * u)

 = s* (cos(θ/2))^2* u + t* (cos(θ/2))^2*v - s* sin(θ/2)* cos(θ/2) + t* sin(θ/2)* cos(θ/2)*w

  +s* sin(θ/2)* cos(θ/2) +t* sin(θ/2)* cos(θ/2)*w -s*(sin(θ/2))^2*u - t*(sin(θ/2))^2*v

 =s*u +t* cos(θ)*v +t* sin(θ)*w


由此可知,p是由pu正向旋转θ角度而得。

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值