【轉】Unity四元數和向量相乘作用及其運算規則
作用:四元數和向量相乘表示這個向量按照這個四元數進行旋轉之後得到的新的向量。
比如:向量vector3(0,0,10),繞著Y軸旋轉90度,得到新的向量是vector3(10,0,0)。
在unity中表示為:
運行結果為:
復合旋轉就是四元數依次相乘,最後乘以向量
多來幾例:
想了解其中的運算過程的可以往下看。
將四元數的四個值分別計為:(w,x,y,z),unity中的四元數中的四個數字是(x,y,z,w),不影響下面的計算過程。
繞任意軸旋轉任意角度的四元數為:
那麽繞著Y軸旋轉90度的四元數就是q = (√2/2 , 0 , √2/2 , 0);
(unity中這個Quaternion.Euler(0,90,0)打debug的話是(0,√2/2 , 0 , √2/2 ),因為排列順序是(x,y,z,w),不影響下面的計算過程)
四元數乘以向量的運算規則為:q * v = (q) *( v) *( q−1);
其中:
q = (√2/2 , 0 , √2/2 , 0);
v,將v向量擴充為四元數(0,v),也就是v = (0 , 0,0 , 10);
q−1是四元數q的逆,求逆過程如下:
共軛四元數:q*=(w,-x,-y,-z),也就是(√2/2 , 0 , -√2/2 , 0)
四元數的逆:q−1=q*/N(q),也就是q−1 = (√2/2 , 0 , -√2/2 , 0)
q * v = q * v * q−1 = (√2/2 , 0 , √2/2 , 0) * (0 , 0,0 , 10)*(√2/2 , 0 , -√2/2 , 0);
四元數乘法公式:
按照上述計算公式: q * v = q * v * q−1
(√2/2 , 0 , √2/2 , 0) * (0 , 0,0 , 10) = (0,5√2,0,5√2)
(0,5√2,0,5√2) * (√2/2 , 0 , -√2/2 , 0)=(0,10,0,0);
將最後得到的四元數(0,10,0,0)變為向量(0,newV),就是newV(10,0,0)。
---------------------
作者:capricorn1245
來源:CSDN
原文:https://blog.csdn.net/capricorn1245/article/details/82724830
版權聲明:本文為博主原創文章,轉載請附上博文鏈接!
【轉】Unity四元數和向量相乘作用及其運算規則