日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【转】四元数的推导过程

發布時間:2025/3/18 编程问答 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【转】四元数的推导过程 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

【轉】四元數的推導過程

來自:https://blog.csdn.net/qq_28773183/article/details/80083607

四元數旋轉推導過程

1.基本概念

(1) 四元數的一般形式如下:q=q0+q1i+q2j+q3kq=q0+q1i+q2j+q3k?
(2) 單位四元數:滿足四元數的模為1,即q02+q12+q22+q32=1q02+q12+q22+q32=1?
(3) 四元數的三角形式:q=cosθ2+u??sinθ2q=cosθ2+u→sinθ2?
(4)共軛四元數:q?=q0?q1i?q2j?q3kq?=q0?q1i?q2j?q3k?
(5) 純四元數:q=q1i+q2j+q3kq=q1i+q2j+q3k?
(6)四元數與空間旋轉:

Rq(p)=qpq?1Rq(p)=qpq?1


其中:?
qq:單位四元數?
q?1q?1:四元數的逆,對于單位四元數,q?=q?1q?=q?1?
pp:純四元數?
Rq(p):Rq(p):也是一個純四元數

?


2. 歐拉角的萬向鎖問題

先看一個簡單的歐拉旋轉,如下圖所示:歐拉旋轉需要先確定旋轉順序,我們可以定義X-Y-Z的順序(總共有12種旋轉順序),那么什么是萬向鎖呢,我們可以用手機在桌子上進行旋轉,以手機的正面為xy平面,以手機的厚度的方向作為z軸,我們先繞x轉一個角度,然后再繞y軸旋轉90度,我們會發現一個問題,當我們再繞z軸旋轉一個角度,效果等同于我開始繞x軸旋轉另外一個角度,再繞y軸旋轉90度就行了.?
?
我們的歐拉旋轉只能表示二維空間了,這是解我們的微分方程會出現退化現象,造成我們的微分方程無法解的情況。這樣說似乎還是比較模糊,那么我們舉一個例子:?

如圖所示:XwYwZwXwYwZw是世界坐標系,XiYiZiXiYiZi是機體坐標系,我們先繞XiXi軸旋轉30°30°,再繞YiYi旋轉90°90°,如下圖所示:?
?
此時我們的XwXw和ZiZi在同一直線上,最后我們再繞ZiZi旋轉40°40°,如下圖所示:?
?
我們會發現一個問題,無論我們怎么旋轉,我們的坐標都是(30,90,z),也就是繞z軸的旋轉角度我們無法衡量的,這也就是我們的萬向鎖問題。


3. 四元數推導

復數旋轉

首先我們看一個復數p=a+bip=a+bi在復平面的表示:?
現在我們將它旋轉角度θθ,先定義另外一個復數q=cosθ+isinθq=cosθ+isinθ,我們發現,復數的乘法表示了一種旋轉:?

qp=(acosθ?bsinθ)+i(asinθ+bcosθ)qp=(acosθ?bsinθ)+i(asinθ+bcosθ)


這個復數恰好就是pp旋轉θθ角度后的值:?

?

三維復數旋轉

我們看到了二維復數乘法可以表示旋轉,那么三維空間呢。按照舉一反三的思想,我們會想到再增加一個虛數作為第三個維度,這個就要涉及到我們的向量的叉乘,如下圖所示:?
?
向量叉乘的結果是兩個向量構成平面的垂直向量,那么我們定義兩個個三維的復數:?

z1=a1+b1i+c1jz2=a2+b2i+c2jz1=a1+b1i+c1jz2=a2+b2i+c2j


其中i2=j2=?1i2=j2=?1,我們類似的進行復數的乘法,得到:?

z1z2=(a1a2?b1b2?c1c2)+(a1b2+a2b1)i+(a1c2+a2c1)j+b1c2ij+b2c1jiz1z2=(a1a2?b1b2?c1c2)+(a1b2+a2b1)i+(a1c2+a2c1)j+b1c2ij+b2c1ji


我們會發現,如果沒有ijjiij和ji這兩項,我們三維的復數旋轉也就沒問題,那該如何處理呢?

?

四元數旋轉

哈密爾頓引入四維的四元數:q=q0+q1i+q2j+q3k,i2=j2=k2=?1q=q0+q1i+q2j+q3k,其中i2=j2=k2=?1,根據向量的叉乘可以定義下列一些關系:?
?
?
?
?
可以得到下列關系:?

ij=?ji=kjk=?kj=iki=?ik=ji2=j2=k2=ijk=?1ij=?ji=kjk=?kj=iki=?ik=ji2=j2=k2=ijk=?1


為了方便理解,我們將四元數寫成向量的形式:q=[s,v??]q=[s,v→],我們可以理解為ss為實部,向量v??v→表示的就是三維空間,下面我們看一下四元數的乘法:?

qa=[sa,a??]qb=[sb,b??]qaqb=[sasb?a???b??,sab??+sba??+a??×b??]qa=[sa,a→]qb=[sb,b→]qaqb=[sasb?a→?b→,sab→+sba→+a→×b→]


由于我們研究的是三維空間,因此我們可以令qaqa為一個純四元數,即qa=[0,a??]qa=[0,a→].則可以得到:

qaqb=[?a???b??,sba??+a??×b??]qaqb=[?a→?b→,sba→+a→×b→]


從上面可以看到,一個普通的四元數是無法將三維空間映射到三維空間的,我們令向量點乘的部分為零,此時,一個純四元數就可以旋轉為另一個純四元數.為了表現出旋轉,這里我們用四元數的三角表示方式:qb=[cosθ,sinθb??]qb=[cosθ,sinθb→],令a???b??=0a→?b→=0,則有:?

qaqb=[0,a??cosθ+a??×b??sinθ]qaqb=[0,a→cosθ+a→×b→sinθ]


我們沒有對向量b??b→做任何限制,下面來用一個例子說明應當對向量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旋轉45°45°后得到:?

p=qp=[0,2–√|b??|i+2–√|b??|j]p′=qp=[0,2|b→|i+2|b→|j]


旋轉之前,純四元數pp的模長為|p|=2|p|=2,旋轉過后,純四元數pp′的模長|p|=2|b??||p′|=2|b→|,所以我們要給旋轉四元數又加上一個約束:四元數qq的模長為1,即qq是一個單位四元數.

?

但是上面的旋轉是有缺點的,因為其限制了我們的旋轉軸和需要被旋轉的四元數必須是垂直的(a???b??=0a→?b→=0),而不能達到任意的旋轉.這時,聰明的哈密爾頓發現,一個四元數會把一個純四元數拉到四維空間,但它的共軛又會把這個四維的空間拉回到三維空間.我們以一個簡單的例子來說明這個問題:?

p=[0,2i],q=[fracsqrt22,fracsqrt66(i+j+k)],q?=[fracsqrt22,?fracsqrt66(i+j+k)]p=[0,2i],q=[fracsqrt22,fracsqrt66(i+j+k)],則q?=[fracsqrt22,?fracsqrt66(i+j+k)]


旋轉之后的四元數Rq(p)Rq(p):?

Rq(p)=[0,2j]Rq(p)=[0,2j]


這里需要注意的一點是,因為經過兩次的旋轉,所以旋轉的角度是2θ2θ,這就是為什么我們常常看到的旋轉四元數是一下形式:?

q=cosθ2+u??sinθ2,|u??|=1

posted on 2018-08-15 17:06 時空觀察者9號 閱讀(...) 評論(...) 編輯 收藏

與50位技術專家面對面20年技術見證,附贈技術全景圖

總結

以上是生活随笔為你收集整理的【转】四元数的推导过程的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。