四元數(shù)是一個復數(shù),下面就一步一步講解下復數(shù)怎么和坐標系旋轉勾搭上的!
在網(wǎng)上查了一些資料,對于四元數(shù)的講解基本上沒有讓我滿意的,可能是我水平不夠或者思路跟不上!所以我打算自己總結一篇淺顯易懂有不漏知識點的四元數(shù)淺析文章!
首先四元數(shù)是一個復數(shù),什么是復數(shù)?應該初中還是高中的數(shù)學肯定是學過的,估計大部分人都還給老師了! 復數(shù)1、概述一下復數(shù) 任意一個復數(shù)z都可以表示為z=a+bi 的形式.我們將a稱之為這個復數(shù)的實部,b稱之為這個復數(shù)的虛部。 其中i的平方等于-1!怪不怪!我理解的復數(shù)的發(fā)明就是為了讓它的虛部也能參與運算,因為數(shù)學里有的地方會出現(xiàn)i平方等于-1的情況,如果沒發(fā)明復數(shù),那么就無法完成計算! 復數(shù)的模長|z|; ![]() 模長
復數(shù)參與運算主要靠上面這幾個關系互相轉換,算到最后可以把虛數(shù)算沒了,就像個中間變量一樣;兔死狗烹,鳥盡弓藏! 2、復數(shù)怎么和旋轉矩陣勾搭上的? 推導 首先寫z1=a+bi,z2=c+di兩個復數(shù);
由于i平方等于-1;進而化簡:
再化簡:
寫成矩陣形式 ![]() 右側的矩陣c d;就是用向量的形式表示z2;為啥呢?因為復數(shù)可以圖像化表示,復數(shù)z=a+bi可以用如下圖表示: ![]() 既然右側的列矩陣c d 表示z2,那么復數(shù)z1就是左側的二維矩陣表示的!進而可以推斷出z2的二維矩陣形式; 最終得出,z1*z2就是兩個二維矩陣相乘,如下圖公式: ![]() 上面的式子里面i不見了,我們就是當i=1;或者讓矩陣乘以一個二維矩陣,但是結果不變,那么這個矩陣就是如下形式,得出i的二維矩陣形式,后面會用到這個i矩陣: ![]() 以上這些公式就可以和旋轉矩陣眉目傳情有點關系了;下面繼續(xù)推導,把復數(shù)z1的矩陣形式再變換一下,就徹底勾搭上了,如下: ![]() 配合下面這個圖看一下,就知道為啥徹底勾搭上了: ![]() 這不就是三角函數(shù)嗎! 那么上面的公式就可以寫成三角函數(shù)的形式了,加上求模的公式,再加上上面得出的i二維矩陣,最終可以把公式寫成如下形式: ![]() 右邊的矩陣就是二維里面的旋轉矩陣了; 左邊的其實就是縮放矩陣; 驗證 實驗一下我們將一個點坐標 (1,0),旋轉θ角度,帶入上面這個公式,最終得到如下; ![]() 就是對點(1,0)逆時針旋轉了θ角度,然后再縮放|z|倍;同理代入點(1,0)也是一樣的原理,如下圖顯示兩個點的旋轉圖; ![]() 如果復數(shù)的模為1,那么就只剩旋轉矩陣了! 總結一下: 如果(模)等于1,復數(shù)z可以寫成如下矩陣形式: ![]() 寫成復數(shù)形式就是:
對比下 :
如此,復數(shù)和旋轉矩陣的關系大家應該知曉了! 數(shù)學真好玩,把兩個不相關的東西硬是緊密的勾搭到了一起,佩服! 單位四元數(shù)(模為1)概述
標準里我們把四元數(shù)表示為:
應用 單位四元數(shù)的復數(shù)形式怎么和3D旋轉扯上關系,推理方法和上面復數(shù)推理2D旋轉矩陣一樣,就不詳細講了,下面我們直接使用它,用matlab寫程序案例,直接到應用層次! 直接調用函數(shù)UnitQuaternion,下面的0.1、0.2、0.3表示繞x繞y繞z旋轉; >> q = UnitQuaternion( rpy2tr(0.1, 0.2, 0.3) ) q = 0.98335 < 0.034271, 0.10602, 0.14357 > 用q.R可以輸出旋轉矩陣: >> q.R ans = 0.7536 -0.4993 0.4275 0.5555 0.8315 -0.0081 -0.3514 0.2436 0.9040 輸出圖形如下: >> q.plot() ![]() 以上就是四元數(shù)的簡單介紹,第一部分主要讓大家搞懂四元數(shù)怎么能表示旋轉的,第二部分就是簡單的應用了,可以看出應用非常簡單,如果實際寫應用程序,四元數(shù)法會簡單明了,節(jié)省時間,也可以讓程序更流暢! |
|
|
來自: taotao_2016 > 《視覺》