四元素的真面目..........简单粗暴
作者:Yang Eninala
鏈接:https://www.zhihu.com/question/23005815/answer/33971127
來源:知乎
著作權(quán)歸作者所有。商業(yè)轉(zhuǎn)載請(qǐng)聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請(qǐng)注明出處。
?
根據(jù)我的理解,大多數(shù)人用漢密爾頓四元數(shù)就只是做三維空間的旋轉(zhuǎn)變換(我反正沒見過其他用法)。那么你不用學(xué)群論,甚至不用復(fù)習(xí)線性代數(shù),看我下面的幾張圖就可以了。
首先,定義一個(gè)你需要做的旋轉(zhuǎn)。旋轉(zhuǎn)軸為向量,旋轉(zhuǎn)角度為(右手法則的旋轉(zhuǎn))。如下圖所示:
此圖中,
那么與此相對(duì)應(yīng)的四元數(shù)(下三行式子都是一個(gè)意思,只是不同的表達(dá)形式)
?
這時(shí)它的共軛(下三行式子都是一個(gè)意思,只是不同的表達(dá)形式),
如果你想算一個(gè)點(diǎn)在這個(gè)旋轉(zhuǎn)下新的坐標(biāo),需要進(jìn)行如下操作,
1.定義純四元數(shù)
2.進(jìn)行四元數(shù)運(yùn)算
3.產(chǎn)生的一定是純四元數(shù),也就是說它的第一項(xiàng)為0,有如下形式:
4.中的后三項(xiàng)就是:
這樣,就完成了一次四元數(shù)旋轉(zhuǎn)運(yùn)算。
同理,如果你有一個(gè)四元數(shù):
那么,它對(duì)應(yīng)一個(gè)以向量為軸旋轉(zhuǎn)角度的旋轉(zhuǎn)操作(右手法則的旋轉(zhuǎn))。
***********************************************************************************************************
如果你想對(duì)四元數(shù)有著更深入的了解,請(qǐng)往下看。
四元數(shù)由漢密爾頓發(fā)明,這一發(fā)明起源于十九世紀(jì)的某一天。在這一天早上,漢密爾頓下樓吃早飯。這時(shí)他的兒子問他,“爸爸,我們能夠?qū)θ獢?shù)組(triplet,可以理解為三維向量)做乘法運(yùn)算么?”漢密爾頓說“不行,我只能加減它們。”
這時(shí)來自21世紀(jì)的旁白旁先生說,“大家快來看十九世紀(jì)的數(shù)學(xué)家有多二,連內(nèi)積和外積都不是知道。”
十九世紀(jì)的漢密爾頓也許確實(shí)不知道內(nèi)積和外積,但是他知道,他想要的三維向量乘法要比內(nèi)積和外積運(yùn)算“高大上”很多。這一乘法運(yùn)算要滿足下列四條性質(zhì):
1.運(yùn)算產(chǎn)生的結(jié)果也要是三維向量
2.存在一個(gè)元運(yùn)算,任何三維向量進(jìn)行元運(yùn)算的結(jié)果就是其本身
3.對(duì)于任何一個(gè)運(yùn)算,都存在一個(gè)逆運(yùn)算,這兩個(gè)運(yùn)算的積是元運(yùn)算
4.運(yùn)算滿足結(jié)合律
換而言之,漢密爾頓想定義的不是一個(gè)簡(jiǎn)單的映射關(guān)系,而是一個(gè)群!(后來我們知道四元數(shù)所在群為S3,而四元數(shù)所代表的三維旋轉(zhuǎn)是SO(3),前者是后者的兩倍覆蓋)內(nèi)積連性質(zhì)1都不滿足,外積不滿足性質(zhì)3。
漢密爾頓先生就這么被自己兒子提出的問題難倒了。經(jīng)歷了無數(shù)個(gè)日日夜夜,他絞盡腦汁也沒想明白這個(gè)問題。終于有一天(1843年的一天),漢密爾頓先生終于意識(shí)到了,自己所需要的運(yùn)算在三維空間中是不可能實(shí)現(xiàn)的,但在四維空間中是可以的,他是如此的興奮,以至于把四元數(shù)的公式刻在了愛爾蘭的一座橋上。
旁白:“WTF,我讓你講三維物體的旋轉(zhuǎn),你給我扯到四維空間上去。”
(不加說明,以下所說四元數(shù)全為單位四元數(shù))
其實(shí),四元數(shù)有四個(gè)變量,完全可以被看作一個(gè)四維向量。單位四元數(shù)(norm=1)則存在于四維空間的一個(gè)球面上。,四元數(shù)乘以四元數(shù)其實(shí)看作(1)對(duì)進(jìn)行左旋轉(zhuǎn),或者(2)對(duì)進(jìn)行右旋轉(zhuǎn)。所以從始至終,四元數(shù)定義的都是四維旋轉(zhuǎn),而不是三維旋轉(zhuǎn)!任意的四維旋轉(zhuǎn)都可以唯一的拆分為一個(gè)左旋轉(zhuǎn)和一個(gè)右旋轉(zhuǎn),表達(dá)出來就是。這里,我們對(duì)四元數(shù)(四維向量)進(jìn)行了一個(gè)左旋轉(zhuǎn)和一個(gè)右旋轉(zhuǎn)。結(jié)果當(dāng)然是一個(gè)四元數(shù),符合性質(zhì)1。這個(gè)運(yùn)算也同時(shí)符合性質(zhì)2,3,4。
好了,說完了四維旋轉(zhuǎn),我們終于可以說說三維旋轉(zhuǎn)了。說白了,三維旋轉(zhuǎn)就是四維旋轉(zhuǎn)的一個(gè)特例,就像二維旋轉(zhuǎn)是三維旋轉(zhuǎn)的一個(gè)特例一樣。說是特例其實(shí)不準(zhǔn)確,準(zhǔn)確的說是一個(gè)子集或者subgroup。為了進(jìn)行三維旋轉(zhuǎn)運(yùn)算,漢密爾頓首先在四維空間里劃出了一塊三維空間。漢密爾頓定義了一種純四元數(shù)(pure quaternion),其表達(dá)式為。純四元數(shù)第一項(xiàng)為零,它存在于四維空間的三維超平面上,與三維空間中的三維向量一一對(duì)應(yīng)。然后,就有了我們常見的這種左乘單位四元數(shù),右乘其共軛的表達(dá)式。我真心不知道漢密爾頓是怎么想出來的,不過回過頭來看,這個(gè)運(yùn)算形式是為了限制其運(yùn)算結(jié)果所在的空間。簡(jiǎn)單的說,當(dāng)對(duì)一個(gè)三維向量進(jìn)行三維旋轉(zhuǎn)后,我們希望得到的是一個(gè)三維向量。(如果你真能得到一個(gè)四維向量,就不敢自己在家轉(zhuǎn)圈圈了吧,轉(zhuǎn)著轉(zhuǎn)著,就進(jìn)入四次元了!)那么這個(gè)左乘單位四元數(shù),右乘其共軛的運(yùn)算保證了結(jié)果是一個(gè)在三維超平面上中的純四元數(shù)。
把左乘和右乘表達(dá)為矩陣形式會(huì)讓我們看的更清楚一些。依照的定義,的矩陣形式為
很明顯,前面的矩陣雖然是一個(gè)4x4的四維旋轉(zhuǎn)矩陣,但是它只是在右下角3x3的區(qū)域內(nèi)和一個(gè)單位矩陣有所不同。所以說,它是一個(gè)限制在三維超平面上的四維旋轉(zhuǎn)。如果表達(dá)式右邊不是共軛,而是任意四元數(shù),那么我們所作的就是一個(gè)很普通的四維旋轉(zhuǎn)。如果只是左乘一個(gè)單位四元數(shù),右邊什么都不乘,那么我們得到的是四維旋轉(zhuǎn)的一個(gè)子集,這個(gè)子集并不能保證結(jié)果限制在三維超平面上。如果只右乘,不左乘也是一樣一樣的。
說了這么多,對(duì)于堅(jiān)持到最后的你,上圖一幅,以表感謝。
其實(shí)這張圖解釋了一個(gè)長(zhǎng)久的疑問。為什么四元數(shù)里用的是而不是。這是因?yàn)樽龅木褪且粋€(gè)的旋轉(zhuǎn),而也做了一個(gè)的旋轉(zhuǎn)。我們進(jìn)行了兩次旋轉(zhuǎn),而不是一次,這兩次旋轉(zhuǎn)的結(jié)果是一個(gè)旋轉(zhuǎn)角為的旋轉(zhuǎn)。
編輯于 2015-03-08
總結(jié)
以上是生活随笔為你收集整理的四元素的真面目..........简单粗暴的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SVN分支合并冲突解决
- 下一篇: Linemod;理解