www91在线观看-wwwcom黄-wwwcom黄公司-wwww.黄-亚洲丝袜一区二区-亚洲丝袜天堂

歡迎光臨ELBE網站!
您的位置: ELBE > 行業資訊 > 四元數應用——轉矩陣、Slerp插值與萬向節
網站頭像

文章分類

Article classification
聯系我們

ELBE

電話:021-58780503 微信:18017854633 郵箱:sales_fullyear@126.com 地址:上海市浦東新區城南路168弄3號峰匯商務廣場B座911室
四元數應用——轉矩陣、Slerp插值與萬向節
時間:2022-12-16 查看:44 作者:小葉

四元數系列:

四元數-基本概念

四元數-旋轉

四元數應用-轉矩陣Slerp插值與萬向節

四元數應用-旋轉混合順序無關

—————————————————————————————————————————

今天,我們來談談一些關于四元數的例子。與前兩篇文章相比,它們可能有點分散,這是對前兩章的補充說明。具體來說,我們將討論三個問題。第一個是四元數和矩陣的轉換,第二個是四元數的插入值。最后,我們來談談萬向節鎖的問題。話不多說,開始談話。

1.四元數矩陣形式

目前,大多數底層的圖形API,空間坐標的轉換仍然基于矩陣。因此,當我們使用四元數來操作旋轉時,最終傳輸給頂點著色器的數據應以矩陣的形式進行。然而,從應用層的角度來看,我們可以通過滿足以下公式來實現轉換。

我相信大多數人對背誦公式并不滿意。推導公式的主要方法有兩種。其中一個是從代數的角度解決問題。直率地說,這是一個硬算。我們在四元數和旋轉(2)中提到了一個公式:

我們可以找到三個矩陣,然后添加上述轉換公式。這里沒有推導,感興趣的人可以自己計算。以下是一種更靈性的證明方法。當給出以下兩個四元數時:

如下圖所示:

可以說,兩個四元數相乘轉換為矩陣L右乘四元數q。發散思維,把這種行為寫成矩陣R左乘四元數q,具體形式如下圖所示:

最體看L和R括號中的四元下標非常重要,因為四元不符合交換規律,括號中的下標實際上是不同的我們必須注意這個地方。基礎知識完成后,直接應用于下面。根據旋轉公式和上述定義,我們很容易得到以下公式:

然后將L和R在上述矩陣中,我們可以得到:

證畢!

2.四元數的Slerp插值

事實上,插值問題一直是圖形學中的一個經典問題。一般來說,線性插值可以滿足大多數情況,但對于旋轉,線性插值肯定不好。讓我們下圖:

很明顯,左圖(線插)比右圖(球插)差。從動畫的角度來看,為了保證每幀的旋轉均勻變化,線性插值得到的旋轉結果必須不均勻,主要考慮旋轉角度。然后我們從代數的角度來思考。如果兩個單位的四元數之間的插值,如左圖的線性插值,則得到的四元數不得為單位的四元數。我們希望旋轉插值不會改變長度,因此顯然右圖的球面(Slerp)插值更合理。

四元數球面插值證明很多,Wiki上面有非常詳細的證據和實現Code。事實上,主要思想是施密特正交。首先,根據 和 解算兩個正 交四元,然后通過加權計算最終 。下圖可以很好地解釋這件事。

下面主要討論的是這個問題。上圖給出了一種球面插值公式,暫時稱為加法形式。由于四元旋轉是相乘的,我們的上述公式也可以寫成:

鑒于刨根問底的精神,先說四元數的差異。(Difference),這更容易理解,類似于矩陣,A與B的差異可以理解為先旋轉A,然后旋轉B,得到A和B兩者之間的差值,表示為 。然后,如果我們去t倍差或直接說差乘以t因子,我們將引用四元數和旋轉(1)中提到的四元數指數形式。對于 ,我們來看看 和 具體情況如下:

最后我們令 以及 ,根據以下公式重新審視球面插值:

可見,兩種表現形式可以相互轉化。

三、萬向節死鎖

事實上,這個問題不能算作四元的應用。在萬向節鎖的早期階段,它被用來處理旋轉過程中機械臂缺乏自由度的問題。由于當時機械臂的關節是單自由的,在模擬人體的一些球形關節(自由度為3的關節)時,將使用三組正交機械關節進行模擬。

如圖所示,當關節2旋轉90時,機械關節1-3共同模擬手腕活動°之后關節1和關節3會重疊,所以旋轉關節1和旋轉關節3只會沿著 旋轉軸,這就是萬向節鎖。值得一提的是,當你旋轉關節1、關節2和關節3時,當你旋轉關節3時,無論如何旋轉都不會影響關節2和關節1,所以只有關節2旋轉90°萬向節鎖會產生。

當早期的計算機動畫移動機器人時,最簡單的方法是直接模擬歐拉角的旋轉。這導致了通用鎖。那么如何理解計算機動畫中的這個問題呢?畢竟,動畫中沒有機械關節。

假設三個歐拉角的旋轉順序如下

當 的時候, 和 它將重疊,如右圖,從而產生萬向節鎖。

因此,為了避免這個問題,圖形旋轉開始使用軸角,因為軸角可以說三個歐拉角等同于繞特定軸旋轉的角度。OpenGL有個函數glRotate實現函數的方法是使用軸角。當然,并不是說軸角沒有萬向鎖。當三個正交軸角按一定順序旋轉時,仍然會產生萬向鎖,但這種情況很難發生。

所以軸角解決了這個問題,為什么要用四元數?

4.總結四元數

最后點一個問題,呼應前面的文章,具體說說四元數的好處:

解決萬向節鎖(Gimbal Lock)問題。(不要用四元數模擬歐拉角!)只需存儲4個浮點,比矩陣輕。例如,矩陣至少需要9個float表示旋轉信息,即使加上旋轉縮放,也會比矩陣少存2-6個float,對于在PC游戲的開發可能并不明顯,畢竟,現在內存很大,但在家用機器(尤其是上一代)中,內存相對較緊是相當有利的。無論是求逆、串聯等操作,四元數都比矩陣更高效。例如,逆轉相當于逆轉。即使是正交矩陣,轉移的操作成本也遠高于逆轉。此外,在大多數情況下,由于縮放,逆轉操作將更加復雜。然而,使用四元數需要考慮轉換四元數和矩陣的成本,但綜合考慮,四元數的運行成本相對較低。

基本上四元數在我這里就結束了,以后會有人請人 @Obsver Anonym 請期待更新一篇具體應用的文章!

繼續閱讀與本文標簽相同的文章
cache
Processed in 0.009065 Second.
主站蜘蛛池模板: 久久线看观看精品香蕉国产 | 小视频在线| 久久99国产乱子伦精品免费| 91精品视频免费观看| 欧美日韩亚洲一区二区三区| 97影院在线午夜| 99国产精品久久| 日日碰碰| 国产色在线| 亚洲综合一二三区| 国产亚洲青色国产| 五月婷婷综合激情网| 国产黄色自拍视频| 日韩精品欧美亚洲高清有无| 成人精品| 色婷婷中文字幕在线一区天堂| 激情小说图片| 亚洲精品福利网站| 丁香五月情| 六月激情综合| 日本韩国一级| 日韩欧美一区黑人vs日本人| 凹凸精品视频分类国产品免费| 欧美另类极品videosbest视| 91国内精品在线| 久久精品影院永久网址| 伊人久色| 成人年鲁鲁在线观看视频| 四虎精品久久久久影院| 97国产精品人人爽人人做| 久久a热6| 色天天躁夜夜躁天干天干| 91逼逼| 国产欧美日韩综合精品一区二区三区| 色av.com| 亚洲一区在线播放| 97精品久久天干天天蜜| 国产在线一区二区三区欧美| 热久久综合网| 91精品国产综合久久婷婷| 国产在线观看成人|