天天看點

四元數旋轉公式的證明

有很多文章和文章讨論四元數在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

如圖所示, 設四元數v與u垂直,與 u,p共面,且v^2 = -1;四元數w =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’是由p繞u正向旋轉θ角度而得。

繼續閱讀