【转】四元数的推导过程
【轉(zhuǎn)】四元數(shù)的推導(dǎo)過程
來自:https://blog.csdn.net/qq_28773183/article/details/80083607
四元數(shù)旋轉(zhuǎn)推導(dǎo)過程
1.基本概念
(1) 四元數(shù)的一般形式如下:q=q0+q1i+q2j+q3kq=q0+q1i+q2j+q3k?
(2) 單位四元數(shù):滿足四元數(shù)的模為1,即q02+q12+q22+q32=1q02+q12+q22+q32=1?
(3) 四元數(shù)的三角形式:q=cosθ2+u??sinθ2q=cosθ2+u→sinθ2?
(4)共軛四元數(shù):q?=q0?q1i?q2j?q3kq?=q0?q1i?q2j?q3k?
(5) 純四元數(shù):q=q1i+q2j+q3kq=q1i+q2j+q3k?
(6)四元數(shù)與空間旋轉(zhuǎn):
其中:?
qq:單位四元數(shù)?
q?1q?1:四元數(shù)的逆,對(duì)于單位四元數(shù),q?=q?1q?=q?1?
pp:純四元數(shù)?
Rq(p):也是一個(gè)純四元數(shù)Rq(p):也是一個(gè)純四元數(shù)
?
2. 歐拉角的萬向鎖問題
先看一個(gè)簡(jiǎn)單的歐拉旋轉(zhuǎn),如下圖所示:歐拉旋轉(zhuǎn)需要先確定旋轉(zhuǎn)順序,我們可以定義X-Y-Z的順序(總共有12種旋轉(zhuǎn)順序),那么什么是萬向鎖呢,我們可以用手機(jī)在桌子上進(jìn)行旋轉(zhuǎn),以手機(jī)的正面為xy平面,以手機(jī)的厚度的方向作為z軸,我們先繞x轉(zhuǎn)一個(gè)角度,然后再繞y軸旋轉(zhuǎn)90度,我們會(huì)發(fā)現(xiàn)一個(gè)問題,當(dāng)我們?cè)倮@z軸旋轉(zhuǎn)一個(gè)角度,效果等同于我開始繞x軸旋轉(zhuǎn)另外一個(gè)角度,再繞y軸旋轉(zhuǎn)90度就行了.?
?
我們的歐拉旋轉(zhuǎn)只能表示二維空間了,這是解我們的微分方程會(huì)出現(xiàn)退化現(xiàn)象,造成我們的微分方程無法解的情況。這樣說似乎還是比較模糊,那么我們舉一個(gè)例子:?
如圖所示:XwYwZwXwYwZw是世界坐標(biāo)系,XiYiZiXiYiZi是機(jī)體坐標(biāo)系,我們先繞XiXi軸旋轉(zhuǎn)30°30°,再繞YiYi旋轉(zhuǎn)90°90°,如下圖所示:?
?
此時(shí)我們的XwXw和ZiZi在同一直線上,最后我們?cè)倮@ZiZi旋轉(zhuǎn)40°40°,如下圖所示:?
?
我們會(huì)發(fā)現(xiàn)一個(gè)問題,無論我們?cè)趺葱D(zhuǎn),我們的坐標(biāo)都是(30,90,z),也就是繞z軸的旋轉(zhuǎn)角度我們無法衡量的,這也就是我們的萬向鎖問題。
3. 四元數(shù)推導(dǎo)
復(fù)數(shù)旋轉(zhuǎn)
首先我們看一個(gè)復(fù)數(shù)p=a+bip=a+bi在復(fù)平面的表示:?
現(xiàn)在我們將它旋轉(zhuǎn)角度θθ,先定義另外一個(gè)復(fù)數(shù)q=cosθ+isinθq=cosθ+isinθ,我們發(fā)現(xiàn),復(fù)數(shù)的乘法表示了一種旋轉(zhuǎn):?
這個(gè)復(fù)數(shù)恰好就是pp旋轉(zhuǎn)θθ角度后的值:?
?
三維復(fù)數(shù)旋轉(zhuǎn)
我們看到了二維復(fù)數(shù)乘法可以表示旋轉(zhuǎn),那么三維空間呢。按照舉一反三的思想,我們會(huì)想到再增加一個(gè)虛數(shù)作為第三個(gè)維度,這個(gè)就要涉及到我們的向量的叉乘,如下圖所示:?
?
向量叉乘的結(jié)果是兩個(gè)向量構(gòu)成平面的垂直向量,那么我們定義兩個(gè)個(gè)三維的復(fù)數(shù):?
其中i2=j2=?1i2=j2=?1,我們類似的進(jìn)行復(fù)數(shù)的乘法,得到:?
我們會(huì)發(fā)現(xiàn),如果沒有ij和jiij和ji這兩項(xiàng),我們?nèi)S的復(fù)數(shù)旋轉(zhuǎn)也就沒問題,那該如何處理呢?
?
四元數(shù)旋轉(zhuǎn)
哈密爾頓引入四維的四元數(shù):q=q0+q1i+q2j+q3k,其中i2=j2=k2=?1q=q0+q1i+q2j+q3k,其中i2=j2=k2=?1,根據(jù)向量的叉乘可以定義下列一些關(guān)系:?
?
?
?
?
可以得到下列關(guān)系:?
為了方便理解,我們將四元數(shù)寫成向量的形式:q=[s,v??]q=[s,v→],我們可以理解為ss為實(shí)部,向量v??v→表示的就是三維空間,下面我們看一下四元數(shù)的乘法:?
由于我們研究的是三維空間,因此我們可以令qaqa為一個(gè)純四元數(shù),即qa=[0,a??]qa=[0,a→].則可以得到:
從上面可以看到,一個(gè)普通的四元數(shù)是無法將三維空間映射到三維空間的,我們令向量點(diǎn)乘的部分為零,此時(shí),一個(gè)純四元數(shù)就可以旋轉(zhuǎn)為另一個(gè)純四元數(shù).為了表現(xiàn)出旋轉(zhuǎn),這里我們用四元數(shù)的三角表示方式:qb=[cosθ,sinθb??]qb=[cosθ,sinθb→],令a???b??=0a→?b→=0,則有:?
我們沒有對(duì)向量b??b→做任何限制,下面來用一個(gè)例子說明應(yīng)當(dāng)對(duì)向量b??b→做什么限制.?
令p=[0,2i],q=[2√2,2√2b??]p=[0,2i],q=[22,22b→],考慮到a???b??=0a→?b→=0,令b??=|b??|kb→=|b→|k,則將pp旋轉(zhuǎn)45°45°后得到:?
旋轉(zhuǎn)之前,純四元數(shù)pp的模長(zhǎng)為|p|=2|p|=2,旋轉(zhuǎn)過后,純四元數(shù)p′p′的模長(zhǎng)|p′|=2|b??||p′|=2|b→|,所以我們要給旋轉(zhuǎn)四元數(shù)又加上一個(gè)約束:四元數(shù)qq的模長(zhǎng)為1,即qq是一個(gè)單位四元數(shù).
?
但是上面的旋轉(zhuǎn)是有缺點(diǎn)的,因?yàn)槠湎拗屏宋覀兊男D(zhuǎn)軸和需要被旋轉(zhuǎn)的四元數(shù)必須是垂直的(a???b??=0a→?b→=0),而不能達(dá)到任意的旋轉(zhuǎn).這時(shí),聰明的哈密爾頓發(fā)現(xiàn),一個(gè)四元數(shù)會(huì)把一個(gè)純四元數(shù)拉到四維空間,但它的共軛又會(huì)把這個(gè)四維的空間拉回到三維空間.我們以一個(gè)簡(jiǎn)單的例子來說明這個(gè)問題:?
旋轉(zhuǎn)之后的四元數(shù)Rq(p)Rq(p):?
這里需要注意的一點(diǎn)是,因?yàn)榻?jīng)過兩次的旋轉(zhuǎn),所以旋轉(zhuǎn)的角度是2θ2θ,這就是為什么我們常常看到的旋轉(zhuǎn)四元數(shù)是一下形式:?
posted on 2018-08-15 17:06 時(shí)空觀察者9號(hào) 閱讀(...) 評(píng)論(...) 編輯 收藏
與50位技術(shù)專家面對(duì)面20年技術(shù)見證,附贈(zèng)技術(shù)全景圖總結(jié)
以上是生活随笔為你收集整理的【转】四元数的推导过程的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ARMV7,ARMV8
- 下一篇: 待办